linux 2.6.16.38 w/ vs2.0.3-rc1
[linux-2.6.git] / drivers / cdrom / sbpcd.c
index 8e81cff..466e9c2 100644 (file)
@@ -461,7 +461,7 @@ static int sbpcd[] =
 /*
  * Protects access to global structures etc.
  */
-static spinlock_t sbpcd_lock __cacheline_aligned = SPIN_LOCK_UNLOCKED;
+static  __cacheline_aligned DEFINE_SPINLOCK(sbpcd_lock);
 static struct request_queue *sbpcd_queue;
 
 MODULE_PARM(sbpcd, "2i");
@@ -570,7 +570,7 @@ static const char *major_name="sbpcd";
 
 /*==========================================================================*/
 
-#if FUTURE
+#ifdef FUTURE
 static DECLARE_WAIT_QUEUE_HEAD(sbp_waitq);
 #endif /* FUTURE */
 
@@ -703,7 +703,7 @@ static struct sbpcd_drive {
        u_char TocEnt_number;
        u_char TocEnt_format; /* em */
        u_int TocEnt_address;
-#if SAFE_MIXED
+#ifdef SAFE_MIXED
        char has_data;
 #endif /* SAFE_MIXED */ 
        u_char ored_ctl_adr; /* to detect if CDROM contains data tracks */
@@ -742,13 +742,10 @@ static struct sbpcd_drive *current_drive = D_S;
 unsigned long cli_sti; /* for saving the processor flags */
 #endif
 /*==========================================================================*/
-static struct timer_list delay_timer =
-               TIMER_INITIALIZER(mark_timeout_delay, 0, 0);
-static struct timer_list data_timer =
-               TIMER_INITIALIZER(mark_timeout_data, 0, 0);
+static DEFINE_TIMER(delay_timer, mark_timeout_delay, 0, 0);
+static DEFINE_TIMER(data_timer, mark_timeout_data, 0, 0);
 #if 0
-static struct timer_list audio_timer =
-               TIMER_INITIALIZER(mark_timeout_audio, 0, 0);
+static DEFINE_TIMER(audio_timer, mark_timeout_audio, 0, 0);
 #endif
 /*==========================================================================*/
 /*
@@ -830,8 +827,7 @@ static void mark_timeout_audio(u_long i)
 static void sbp_sleep(u_int time)
 {
        sti();
-       current->state = TASK_INTERRUPTIBLE;
-       schedule_timeout(time);
+       schedule_timeout_interruptible(time);
        sti();
 }
 /*==========================================================================*/
@@ -1161,11 +1157,11 @@ static void EvaluateStatus(int st)
        return;
 }
 /*==========================================================================*/
+static int cmd_out_T(void);
+
 static int get_state_T(void)
 {
        int i;
-       
-       static int cmd_out_T(void);
 
        clr_cmdbuf();
        current_drive->n_bytes=1;
@@ -1308,13 +1304,14 @@ static int cc_ReadError(void)
        return (i);
 }
 /*==========================================================================*/
+static int cc_DriveReset(void);
+
 static int cmd_out_T(void)
 {
 #undef CMDT_TRIES
 #define CMDT_TRIES 1000
 #define TEST_FALSE_FF 1
-       
-       static int cc_DriveReset(void);
+
        int i, j, l=0, m, ntries;
        unsigned long flags;
 
@@ -3176,7 +3173,7 @@ static int cc_CheckMultiSession(void)
        return (0);
 }
 /*==========================================================================*/
-#if FUTURE
+#ifdef FUTURE
 static int cc_SubChanInfo(int frame, int count, u_char *buffer)
        /* "frame" is a RED BOOK (msf-bin) address */
 {
@@ -3733,7 +3730,7 @@ static int __init check_drives(void)
        return (0);
 }
 /*==========================================================================*/
-#if FUTURE
+#ifdef FUTURE
 /*
  *  obtain if requested service disturbs current audio state
  */            
@@ -4027,7 +4024,7 @@ static int sbpcd_drive_status(struct cdrom_device_info *cdi, int slot_nr)
 
 
 /*==========================================================================*/
-#if FUTURE
+#ifdef FUTURE
 /*
  *  called always if driver gets entered
  *  returns 0 or ERROR2 or ERROR15
@@ -4198,7 +4195,7 @@ static int sbpcd_dev_ioctl(struct cdrom_device_info *cdi, u_int cmd,
                
        case CDROMREADMODE1:
                msg(DBG_IOC,"ioctl: CDROMREADMODE1 requested.\n");
-#if SAFE_MIXED
+#ifdef SAFE_MIXED
                if (current_drive->has_data>1) RETURN_UP(-EBUSY);
 #endif /* SAFE_MIXED */
                cc_ModeSelect(CD_FRAMESIZE);
@@ -4208,7 +4205,7 @@ static int sbpcd_dev_ioctl(struct cdrom_device_info *cdi, u_int cmd,
                
        case CDROMREADMODE2: /* not usable at the moment */
                msg(DBG_IOC,"ioctl: CDROMREADMODE2 requested.\n");
-#if SAFE_MIXED
+#ifdef SAFE_MIXED
                if (current_drive->has_data>1) RETURN_UP(-EBUSY);
 #endif /* SAFE_MIXED */
                cc_ModeSelect(CD_FRAMESIZE_RAW1);
@@ -4218,7 +4215,8 @@ static int sbpcd_dev_ioctl(struct cdrom_device_info *cdi, u_int cmd,
                
        case CDROMAUDIOBUFSIZ: /* configure the audio buffer size */
                msg(DBG_IOC,"ioctl: CDROMAUDIOBUFSIZ entered.\n");
-               if (current_drive->sbp_audsiz>0) vfree(current_drive->aud_buf);
+               if (current_drive->sbp_audsiz>0)
+                       vfree(current_drive->aud_buf);
                current_drive->aud_buf=NULL;
                current_drive->sbp_audsiz=arg;
                
@@ -4257,17 +4255,17 @@ static int sbpcd_dev_ioctl(struct cdrom_device_info *cdi, u_int cmd,
                if (famL_drive) RETURN_UP(-EINVAL);
                if (famV_drive) RETURN_UP(-EINVAL);
                if (famT_drive) RETURN_UP(-EINVAL);
-#if SAFE_MIXED
+#ifdef SAFE_MIXED
                if (current_drive->has_data>1) RETURN_UP(-EBUSY);
 #endif /* SAFE_MIXED */ 
                if (current_drive->aud_buf==NULL) RETURN_UP(-EINVAL);
-               if (copy_from_user(&read_audio, (void *)arg,
+               if (copy_from_user(&read_audio, (void __user *)arg,
                                   sizeof(struct cdrom_read_audio)))
                        RETURN_UP(-EFAULT);
                if (read_audio.nframes < 0 || read_audio.nframes>current_drive->sbp_audsiz) RETURN_UP(-EINVAL);
-               i=verify_area(VERIFY_WRITE, read_audio.buf,
-                             read_audio.nframes*CD_FRAMESIZE_RAW);
-               if (i) RETURN_UP(i);
+               if (!access_ok(VERIFY_WRITE, read_audio.buf,
+                             read_audio.nframes*CD_FRAMESIZE_RAW))
+                       RETURN_UP(-EFAULT);
                
                if (read_audio.addr_format==CDROM_MSF) /* MSF-bin specification of where to start */
                        block=msf2lba(&read_audio.addr.msf.minute);
@@ -4460,8 +4458,8 @@ static int sbpcd_dev_ioctl(struct cdrom_device_info *cdi, u_int cmd,
                                msg(DBG_AUD,"read_audio: cc_ReadError was necessary after read: %02X\n",i);
                                continue;
                        }
-                       if (copy_to_user((u_char *)read_audio.buf,
-                                        (u_char *) current_drive->aud_buf,
+                       if (copy_to_user(read_audio.buf,
+                                        current_drive->aud_buf,
                                         read_audio.nframes * CD_FRAMESIZE_RAW))
                                RETURN_UP(-EFAULT);
                        msg(DBG_AUD,"read_audio: copy_to_user done.\n");
@@ -4549,7 +4547,7 @@ static int sbpcd_audio_ioctl(struct cdrom_device_info *cdi, u_int cmd,
                
        case CDROMPLAYMSF:
                msg(DBG_IOC,"ioctl: CDROMPLAYMSF entered.\n");
-#if SAFE_MIXED
+#ifdef SAFE_MIXED
                if (current_drive->has_data>1) RETURN_UP(-EBUSY);
 #endif /* SAFE_MIXED */ 
                if (current_drive->audio_state==audio_playing)
@@ -4584,7 +4582,7 @@ static int sbpcd_audio_ioctl(struct cdrom_device_info *cdi, u_int cmd,
                
        case CDROMPLAYTRKIND: /* Play a track.  This currently ignores index. */
                msg(DBG_IOC,"ioctl: CDROMPLAYTRKIND entered.\n");
-#if SAFE_MIXED
+#ifdef SAFE_MIXED
                if (current_drive->has_data>1) RETURN_UP(-EBUSY);
 #endif /* SAFE_MIXED */ 
                if (current_drive->audio_state==audio_playing)
@@ -4647,7 +4645,7 @@ static int sbpcd_audio_ioctl(struct cdrom_device_info *cdi, u_int cmd,
                
        case CDROMSTOP:      /* Spin down the drive */
                msg(DBG_IOC,"ioctl: CDROMSTOP entered.\n");
-#if SAFE_MIXED
+#ifdef SAFE_MIXED
                if (current_drive->has_data>1) RETURN_UP(-EBUSY);
 #endif /* SAFE_MIXED */ 
                i=cc_Pause_Resume(1);
@@ -4912,7 +4910,7 @@ static void do_sbpcd_request(request_queue_t * q)
                goto request_loop;
        }
 
-#if FUTURE
+#ifdef FUTURE
        i=prepare(0,0); /* at moment not really a hassle check, but ... */
        if (i!=0)
                msg(DBG_INF,"\"prepare\" tells error %d -- ignored\n", i);
@@ -4940,7 +4938,7 @@ static void do_sbpcd_request(request_queue_t * q)
                sbp_sleep(0);
                if (sbp_data(req) != 0)
                {
-#if SAFE_MIXED
+#ifdef SAFE_MIXED
                        current_drive->has_data=2; /* is really a data disk */
 #endif /* SAFE_MIXED */ 
 #ifdef DEBUG_GTL
@@ -5372,7 +5370,7 @@ static int sbpcd_block_ioctl(struct inode *inode, struct file *file,
                                unsigned cmd, unsigned long arg)
 {
        struct sbpcd_drive *p = inode->i_bdev->bd_disk->private_data;
-       return cdrom_ioctl(p->sbpcd_infop, inode, cmd, arg);
+       return cdrom_ioctl(file, p->sbpcd_infop, inode, cmd, arg);
 }
 
 static int sbpcd_block_media_changed(struct gendisk *disk)
@@ -5416,11 +5414,11 @@ static int sbpcd_open(struct cdrom_device_info *cdi, int purpose)
                if ((current_drive->ored_ctl_adr&0x40)==0)
                {               
                        msg(DBG_INF,"CD contains no data tracks.\n");
-#if SAFE_MIXED
+#ifdef SAFE_MIXED
                        current_drive->has_data=0;
 #endif /* SAFE_MIXED */
                }
-#if SAFE_MIXED
+#ifdef SAFE_MIXED
                else if (current_drive->has_data<1) current_drive->has_data=1;
 #endif /* SAFE_MIXED */ 
        }
@@ -5455,7 +5453,7 @@ static void sbpcd_release(struct cdrom_device_info * cdi)
                                if (p->f_eject) cc_SpinDown();
                        p->diskstate_flags &= ~cd_size_bit;
                        p->open_count=0; 
-#if SAFE_MIXED
+#ifdef SAFE_MIXED
                        p->has_data=0;
 #endif /* SAFE_MIXED */ 
                }
@@ -5715,7 +5713,7 @@ int __init sbpcd_init(void)
        
        if (port_index>0)
           {
-            msg(DBG_INF, "You should read linux/Documentation/cdrom/sbpcd\n");
+            msg(DBG_INF, "You should read Documentation/cdrom/sbpcd\n");
             msg(DBG_INF, "and then configure sbpcd.h for your hardware.\n");
           }
        check_datarate();
@@ -5822,7 +5820,7 @@ int __init sbpcd_init(void)
 
                if (p->drv_id==-1) continue;
                switch_drive(p);
-#if SAFE_MIXED
+#ifdef SAFE_MIXED
                p->has_data=0;
 #endif /* SAFE_MIXED */ 
                /*
@@ -5894,7 +5892,7 @@ int __init sbpcd_init(void)
 }
 /*==========================================================================*/
 #ifdef MODULE
-void sbpcd_exit(void)
+static void sbpcd_exit(void)
 {
        int j;
        
@@ -5912,7 +5910,8 @@ void sbpcd_exit(void)
                put_disk(D_S[j].disk);
                devfs_remove("sbp/c0t%d", j);
                vfree(D_S[j].sbp_buf);
-               if (D_S[j].sbp_audsiz>0) vfree(D_S[j].aud_buf);
+               if (D_S[j].sbp_audsiz>0)
+                       vfree(D_S[j].aud_buf);
                if ((unregister_cdrom(D_S[j].sbpcd_infop) == -EINVAL))
                {
                        msg(DBG_INF, "What's that: can't unregister info %s.\n", major_name);
@@ -5942,7 +5941,7 @@ static int sbpcd_media_changed(struct cdrom_device_info *cdi, int disc_nr)
                current_drive->diskstate_flags &= ~toc_bit;
                /* we *don't* need invalidate here, it's done by caller */
                current_drive->diskstate_flags &= ~cd_size_bit;
-#if SAFE_MIXED
+#ifdef SAFE_MIXED
                current_drive->has_data=0;
 #endif /* SAFE_MIXED */