patch-2.4.10 linux/drivers/cdrom/gscd.c

Next file: linux/drivers/cdrom/isp16.c
Previous file: linux/drivers/cdrom/cm206.c
Back to the patch index
Back to the overall index

diff -u --recursive --new-file v2.4.9/linux/drivers/cdrom/gscd.c linux/drivers/cdrom/gscd.c
@@ -41,8 +41,8 @@
 
 */
 
-/* These settings are for various debug-level. Leave they untouched ... */ 
-#define  NO_GSCD_DEBUG 
+/* These settings are for various debug-level. Leave they untouched ... */
+#define  NO_GSCD_DEBUG
 #define  NO_IOCTL_DEBUG
 #define  NO_MODULE_DEBUG
 #define  NO_FUTURE_WORK
@@ -71,81 +71,82 @@
 
 #define MAJOR_NR GOLDSTAR_CDROM_MAJOR
 #include <linux/blk.h>
-#define gscd_port gscd /* for compatible parameter passing with "insmod" */
+#define gscd_port gscd		/* for compatible parameter passing with "insmod" */
 #include "gscd.h"
 
-static int gscd_blocksizes[1] = {512};
+static int gscd_blocksizes[1] = { 512 };
 
-static int gscdPresent            = 0;
+static int gscdPresent = 0;
 
-static unsigned char gscd_buf[2048];    /* buffer for block size conversion */
-static int   gscd_bn              = -1;
-static short gscd_port            = GSCD_BASE_ADDR;
+static unsigned char gscd_buf[2048];	/* buffer for block size conversion */
+static int gscd_bn = -1;
+static short gscd_port = GSCD_BASE_ADDR;
 MODULE_PARM(gscd, "h");
 
 /* Kommt spaeter vielleicht noch mal dran ...
  *    static DECLARE_WAIT_QUEUE_HEAD(gscd_waitq);
- */ 
+ */
 
-static void gscd_transfer         (void);
-static void gscd_read_cmd         (void);
-static void gscd_hsg2msf          (long hsg, struct msf *msf);
-static void gscd_bin2bcd          (unsigned char *p);
+static void gscd_transfer(void);
+static void gscd_read_cmd(void);
+static void gscd_hsg2msf(long hsg, struct msf *msf);
+static void gscd_bin2bcd(unsigned char *p);
 
 /* Schnittstellen zum Kern/FS */
 
-static void do_gscd_request       (request_queue_t *);
-static void __do_gscd_request     (unsigned long dummy);
-static int  gscd_ioctl            (struct inode *, struct file *, unsigned int, unsigned long);
-static int  gscd_open             (struct inode *, struct file *);
-static int  gscd_release          (struct inode *, struct file *);
-static int  check_gscd_med_chg    (kdev_t);
+static void do_gscd_request(request_queue_t *);
+static void __do_gscd_request(unsigned long dummy);
+static int gscd_ioctl(struct inode *, struct file *, unsigned int,
+		      unsigned long);
+static int gscd_open(struct inode *, struct file *);
+static int gscd_release(struct inode *, struct file *);
+static int check_gscd_med_chg(kdev_t);
 
 /*      GoldStar Funktionen    */
 
-static void cc_Reset             (void);
-static int  wait_drv_ready       (void);
-static int  find_drives          (void);
-static void cmd_out              (int, char *, char *, int);
-static void cmd_status           (void);
-static void cc_Ident             (char *);
-static void cc_SetSpeed          (void);
-static void init_cd_drive        (int);
-
-static int  get_status           (void);
-static void clear_Audio          (void);
-static void cc_invalidate        (void);
+static void cc_Reset(void);
+static int wait_drv_ready(void);
+static int find_drives(void);
+static void cmd_out(int, char *, char *, int);
+static void cmd_status(void);
+static void cc_Ident(char *);
+static void cc_SetSpeed(void);
+static void init_cd_drive(int);
+
+static int get_status(void);
+static void clear_Audio(void);
+static void cc_invalidate(void);
 
 /* some things for the next version */
 #ifdef FUTURE_WORK
-static void update_state          (void);
-static long gscd_msf2hsg          (struct msf *mp);
-static int  gscd_bcd2bin          (unsigned char bcd);
+static void update_state(void);
+static long gscd_msf2hsg(struct msf *mp);
+static int gscd_bcd2bin(unsigned char bcd);
 #endif
 
 /*    common GoldStar Initialization    */
 
-static int my_gscd_init (void);
+static int my_gscd_init(void);
 
 
 /*      lo-level cmd-Funktionen    */
 
-static void cmd_info_in          ( char *, int );
-static void cmd_end              ( void );
-static void cmd_read_b           ( char *, int, int );
-static void cmd_read_w           ( char *, int, int );
-static int  cmd_unit_alive       ( void );
-static void cmd_write_cmd        ( char * );
+static void cmd_info_in(char *, int);
+static void cmd_end(void);
+static void cmd_read_b(char *, int, int);
+static void cmd_read_w(char *, int, int);
+static int cmd_unit_alive(void);
+static void cmd_write_cmd(char *);
 
 
 /*      GoldStar Variablen     */
 
-static int  curr_drv_state;
-static int  drv_states[]       = {0,0,0,0,0,0,0,0};
-static int  drv_mode;
-static int  disk_state;
-static int  speed;
-static int  ndrives;
+static int curr_drv_state;
+static int drv_states[] = { 0, 0, 0, 0, 0, 0, 0, 0 };
+static int drv_mode;
+static int disk_state;
+static int speed;
+static int ndrives;
 
 static unsigned char drv_num_read;
 static unsigned char f_dsk_valid;
@@ -155,93 +156,91 @@
 
 static char f_AudioPlay;
 static char f_AudioPause;
-static int  AudioStart_m;
-static int  AudioStart_f;
-static int  AudioEnd_m;
-static int  AudioEnd_f;
- 
+static int AudioStart_m;
+static int AudioStart_f;
+static int AudioEnd_m;
+static int AudioEnd_f;
+
 static struct timer_list gscd_timer;
 
 static struct block_device_operations gscd_fops = {
-	open:			gscd_open,
-	release:		gscd_release,
-	ioctl:			gscd_ioctl,
-	check_media_change:	check_gscd_med_chg,
+	open:gscd_open,
+	release:gscd_release,
+	ioctl:gscd_ioctl,
+	check_media_change:check_gscd_med_chg,
 };
 
 /* 
  * Checking if the media has been changed
  * (not yet implemented)
  */
-static int check_gscd_med_chg (kdev_t full_dev)
+static int check_gscd_med_chg(kdev_t full_dev)
 {
-   int target;
+	int target;
 
 
-   target = MINOR(full_dev);
+	target = MINOR(full_dev);
 
-   if (target > 0) 
-   {
-      printk("GSCD: GoldStar CD-ROM request error: invalid device.\n");
-      return 0;
-   }
+	if (target > 0) {
+		printk
+		    ("GSCD: GoldStar CD-ROM request error: invalid device.\n");
+		return 0;
+	}
+#ifdef GSCD_DEBUG
+	printk("gscd: check_med_change\n");
+#endif
 
-   #ifdef GSCD_DEBUG
-   printk ("gscd: check_med_change\n");
-   #endif
- 
-  return 0;
+	return 0;
 }
 
 
 #ifndef MODULE
 /* Using new interface for kernel-parameters */
-  
-static int __init gscd_setup (char *str)
+
+static int __init gscd_setup(char *str)
 {
-  int ints[2];
-  (void)get_options(str, ARRAY_SIZE(ints), ints);
-  
-  if (ints[0] > 0) 
-  {
-     gscd_port = ints[1];
-  }
- return 1;
+	int ints[2];
+	(void) get_options(str, ARRAY_SIZE(ints), ints);
+
+	if (ints[0] > 0) {
+		gscd_port = ints[1];
+	}
+	return 1;
 }
 
 __setup("gscd=", gscd_setup);
 
 #endif
 
-static int gscd_ioctl (struct inode *ip, struct file *fp, unsigned int cmd, unsigned long arg)
+static int gscd_ioctl(struct inode *ip, struct file *fp, unsigned int cmd,
+		      unsigned long arg)
 {
-unsigned char to_do[10];
-unsigned char dummy;
+	unsigned char to_do[10];
+	unsigned char dummy;
+
 
-                             
-    switch (cmd)
-    {
-       case CDROMSTART:     /* Spin up the drive */
+	switch (cmd) {
+	case CDROMSTART:	/* Spin up the drive */
 		/* Don't think we can do this.  Even if we could,
- 		 * I think the drive times out and stops after a while
+		 * I think the drive times out and stops after a while
 		 * anyway.  For now, ignore it.
 		 */
-            return 0;
+		return 0;
 
-       case CDROMRESUME:   /* keine Ahnung was das ist */
-            return 0;
+	case CDROMRESUME:	/* keine Ahnung was das ist */
+		return 0;
 
 
-       case CDROMEJECT:
-            cmd_status ();
-            to_do[0] = CMD_TRAY_CTL;
-            cmd_out (TYPE_INFO, (char *)&to_do, (char *)&dummy, 0);
+	case CDROMEJECT:
+		cmd_status();
+		to_do[0] = CMD_TRAY_CTL;
+		cmd_out(TYPE_INFO, (char *) &to_do, (char *) &dummy, 0);
 
-            return 0;
+		return 0;
 
-       default:
-            return -EINVAL;
-    }
+	default:
+		return -EINVAL;
+	}
 
 }
 
@@ -251,17 +250,16 @@
  * When Linux gets variable block sizes this will probably go away.
  */
 
-static void gscd_transfer (void)
+static void gscd_transfer(void)
 {
-long offs;
+	long offs;
 
-	while (CURRENT -> nr_sectors > 0 && gscd_bn == CURRENT -> sector / 4)
-	{
-		offs = (CURRENT -> sector & 3) * 512;
-		memcpy(CURRENT -> buffer, gscd_buf + offs, 512);
-		CURRENT -> nr_sectors--;
-		CURRENT -> sector++;
-		CURRENT -> buffer += 512;
+	while (CURRENT->nr_sectors > 0 && gscd_bn == CURRENT->sector / 4) {
+		offs = (CURRENT->sector & 3) * 512;
+		memcpy(CURRENT->buffer, gscd_buf + offs, 512);
+		CURRENT->nr_sectors--;
+		CURRENT->sector++;
+		CURRENT->buffer += 512;
 	}
 }
 
@@ -270,17 +268,17 @@
  * I/O request routine called from Linux kernel.
  */
 
-static void do_gscd_request (request_queue_t * q)
+static void do_gscd_request(request_queue_t * q)
 {
-  __do_gscd_request(0);
+	__do_gscd_request(0);
 }
 
-static void __do_gscd_request (unsigned long dummy)
+static void __do_gscd_request(unsigned long dummy)
 {
-unsigned int block,dev;
-unsigned int nsect;
+	unsigned int block, dev;
+	unsigned int nsect;
 
-repeat:
+      repeat:
 	if (QUEUE_EMPTY || CURRENT->rq_status == RQ_INACTIVE)
 		goto out;
 	INIT_REQUEST;
@@ -288,18 +286,16 @@
 	block = CURRENT->sector;
 	nsect = CURRENT->nr_sectors;
 
-	if (QUEUE_EMPTY || CURRENT -> sector == -1)
+	if (QUEUE_EMPTY || CURRENT->sector == -1)
 		goto out;
 
-	if (CURRENT -> cmd != READ)
-	{
-		printk("GSCD: bad cmd %d\n", CURRENT -> cmd);
+	if (CURRENT->cmd != READ) {
+		printk("GSCD: bad cmd %d\n", CURRENT->cmd);
 		end_request(0);
 		goto repeat;
 	}
 
-	if (MINOR(CURRENT -> rq_dev) != 0)
-	{
+	if (MINOR(CURRENT->rq_dev) != 0) {
 		printk("GSCD: this version supports only one device\n");
 		end_request(0);
 		goto repeat;
@@ -309,18 +305,16 @@
 
 	/* if we satisfied the request from the buffer, we're done. */
 
-	if (CURRENT -> nr_sectors == 0)
-	{
+	if (CURRENT->nr_sectors == 0) {
 		end_request(1);
 		goto repeat;
 	}
-
 #ifdef GSCD_DEBUG
-        printk ("GSCD: dev %d, block %d, nsect %d\n", dev, block, nsect );
+	printk("GSCD: dev %d, block %d, nsect %d\n", dev, block, nsect);
 #endif
 
-	gscd_read_cmd ();
-out:
+	gscd_read_cmd();
+      out:
 	return;
 }
 
@@ -331,47 +325,42 @@
  * read-data command.
  */
 
-static void
-gscd_read_cmd (void)
+static void gscd_read_cmd(void)
 {
-long   block;
-struct gscd_Play_msf gscdcmd;
-char   cmd[] = { CMD_READ, 0x80, 0,0,0, 0,1 }; /* cmd mode M-S-F secth sectl */
+	long block;
+	struct gscd_Play_msf gscdcmd;
+	char cmd[] = { CMD_READ, 0x80, 0, 0, 0, 0, 1 };	/* cmd mode M-S-F secth sectl */
 
 
 
-        cmd_status ();
-        if ( disk_state & (ST_NO_DISK | ST_DOOR_OPEN) )
-        {
-           printk ( "GSCD: no disk or door open\n" );
-           end_request (0);
-        }
-        else
-        {
-           if ( disk_state & ST_INVALID )
-           {
-              printk ( "GSCD: disk invalid\n" );
-              end_request (0);
-           }
-           else
-           {
-              gscd_bn = -1;		/* purge our buffer */
-              block = CURRENT -> sector / 4;
-              gscd_hsg2msf(block, &gscdcmd.start);	/* cvt to msf format */
-
-              cmd[2] = gscdcmd.start.min;
-              cmd[3] = gscdcmd.start.sec;
-              cmd[4] = gscdcmd.start.frame;
+	cmd_status();
+	if (disk_state & (ST_NO_DISK | ST_DOOR_OPEN)) {
+		printk("GSCD: no disk or door open\n");
+		end_request(0);
+	} else {
+		if (disk_state & ST_INVALID) {
+			printk("GSCD: disk invalid\n");
+			end_request(0);
+		} else {
+			gscd_bn = -1;	/* purge our buffer */
+			block = CURRENT->sector / 4;
+			gscd_hsg2msf(block, &gscdcmd.start);	/* cvt to msf format */
+
+			cmd[2] = gscdcmd.start.min;
+			cmd[3] = gscdcmd.start.sec;
+			cmd[4] = gscdcmd.start.frame;
 
 #ifdef GSCD_DEBUG
-              printk ("GSCD: read msf %d:%d:%d\n", cmd[2], cmd[3], cmd[4] ); 
-#endif 
-              cmd_out ( TYPE_DATA, (char *)&cmd, (char *)&gscd_buf[0], 1 );
-        
-              gscd_bn = CURRENT -> sector / 4;
-              gscd_transfer();
-              end_request(1);
-	   }
+			printk("GSCD: read msf %d:%d:%d\n", cmd[2], cmd[3],
+			       cmd[4]);
+#endif
+			cmd_out(TYPE_DATA, (char *) &cmd,
+				(char *) &gscd_buf[0], 1);
+
+			gscd_bn = CURRENT->sector / 4;
+			gscd_transfer();
+			end_request(1);
+		}
 	}
 	SET_TIMER(__do_gscd_request, 1);
 }
@@ -381,28 +370,27 @@
  * Open the device special file.  Check that a disk is in.
  */
 
-static int gscd_open (struct inode *ip, struct file *fp)
+static int gscd_open(struct inode *ip, struct file *fp)
 {
-int   st;
+	int st;
 
 #ifdef GSCD_DEBUG
-printk ( "GSCD: open\n" );
+	printk("GSCD: open\n");
 #endif
 
 	if (gscdPresent == 0)
-		return -ENXIO;			/* no hardware */
+		return -ENXIO;	/* no hardware */
 
 	MOD_INC_USE_COUNT;
 
-        get_status ();
-        st = disk_state & (ST_NO_DISK | ST_DOOR_OPEN);
-        if ( st )
-        {
-           printk ( "GSCD: no disk or door open\n" );
-           MOD_DEC_USE_COUNT;
-           return -ENXIO;
-        }
-                   
+	get_status();
+	st = disk_state & (ST_NO_DISK | ST_DOOR_OPEN);
+	if (st) {
+		printk("GSCD: no disk or door open\n");
+		MOD_DEC_USE_COUNT;
+		return -ENXIO;
+	}
+
 /*	if (updateToc() < 0)
 		return -EIO;
 */
@@ -415,11 +403,11 @@
  * On close, we flush all gscd blocks from the buffer cache.
  */
 
-static int gscd_release (struct inode * inode, struct file * file)
+static int gscd_release(struct inode *inode, struct file *file)
 {
 
 #ifdef GSCD_DEBUG
-printk ( "GSCD: release\n" );
+	printk("GSCD: release\n");
 #endif
 
 	gscd_bn = -1;
@@ -429,692 +417,642 @@
 }
 
 
-int get_status (void)
+int get_status(void)
 {
-int  status;
+	int status;
+
+	cmd_status();
+	status = disk_state & (ST_x08 | ST_x04 | ST_INVALID | ST_x01);
 
-    cmd_status ();
-    status = disk_state & (ST_x08 | ST_x04 | ST_INVALID | ST_x01);
-     
-    if ( status == (ST_x08 | ST_x04 | ST_INVALID | ST_x01) )
-    {
-       cc_invalidate ();
-       return 1;
-    }
-    else
-    {
-       return 0;
-    }
+	if (status == (ST_x08 | ST_x04 | ST_INVALID | ST_x01)) {
+		cc_invalidate();
+		return 1;
+	} else {
+		return 0;
+	}
 }
 
 
-void cc_invalidate (void)
-{
-   drv_num_read  = 0xFF;
-   f_dsk_valid   = 0xFF;
-   current_drive = 0xFF;
-   f_drv_ok      = 0xFF;
-
-   clear_Audio ();
-   
-}   
-
-void clear_Audio (void)
-{
-
-   f_AudioPlay = 0;
-   f_AudioPause = 0;
-   AudioStart_m = 0;
-   AudioStart_f = 0;
-   AudioEnd_m   = 0;
-   AudioEnd_f   = 0;
-   
+void cc_invalidate(void)
+{
+	drv_num_read = 0xFF;
+	f_dsk_valid = 0xFF;
+	current_drive = 0xFF;
+	f_drv_ok = 0xFF;
+
+	clear_Audio();
+
+}
+
+void clear_Audio(void)
+{
+
+	f_AudioPlay = 0;
+	f_AudioPause = 0;
+	AudioStart_m = 0;
+	AudioStart_f = 0;
+	AudioEnd_m = 0;
+	AudioEnd_f = 0;
+
 }
 
 /*
  *   waiting ?  
  */
 
-int wait_drv_ready (void)
+int wait_drv_ready(void)
 {
-int found, read;
+	int found, read;
+
+	do {
+		found = inb(GSCDPORT(0));
+		found &= 0x0f;
+		read = inb(GSCDPORT(0));
+		read &= 0x0f;
+	} while (read != found);
 
-   do
-   {  
-       found = inb ( GSCDPORT(0) ); 
-       found &= 0x0f;
-       read  = inb ( GSCDPORT(0) );
-       read  &= 0x0f;
-   } while ( read != found );
-   
 #ifdef GSCD_DEBUG
-printk ( "Wait for: %d\n", read );
-#endif   
-   
-   return read;
+	printk("Wait for: %d\n", read);
+#endif
+
+	return read;
 }
 
-void cc_Ident (char * respons)
+void cc_Ident(char *respons)
 {
-char to_do [] = {CMD_IDENT, 0, 0};
+	char to_do[] = { CMD_IDENT, 0, 0 };
 
-    cmd_out (TYPE_INFO, (char *)&to_do, (char *)respons, (int)0x1E );
+	cmd_out(TYPE_INFO, (char *) &to_do, (char *) respons, (int) 0x1E);
 
 }
 
-void cc_SetSpeed (void)
+void cc_SetSpeed(void)
 {
-char to_do [] = {CMD_SETSPEED, 0, 0};
-char dummy;
+	char to_do[] = { CMD_SETSPEED, 0, 0 };
+	char dummy;
 
-    if ( speed > 0 )
-    {
-       to_do[1] = speed & 0x0F;
-       cmd_out (TYPE_INFO, (char *)&to_do, (char *)&dummy, 0);
-    }
+	if (speed > 0) {
+		to_do[1] = speed & 0x0F;
+		cmd_out(TYPE_INFO, (char *) &to_do, (char *) &dummy, 0);
+	}
 }
 
 
-void cc_Reset (void)
+void cc_Reset(void)
 {
-char to_do [] = {CMD_RESET, 0};
-char dummy;
+	char to_do[] = { CMD_RESET, 0 };
+	char dummy;
 
-   cmd_out (TYPE_INFO, (char *)&to_do, (char *)&dummy, 0);
+	cmd_out(TYPE_INFO, (char *) &to_do, (char *) &dummy, 0);
 }
 
 
 
-void cmd_status (void)
+void cmd_status(void)
 {
-char to_do [] = {CMD_STATUS, 0};
-char dummy;
+	char to_do[] = { CMD_STATUS, 0 };
+	char dummy;
 
-   cmd_out (TYPE_INFO, (char *)&to_do, (char *)&dummy, 0);
+	cmd_out(TYPE_INFO, (char *) &to_do, (char *) &dummy, 0);
 
 #ifdef GSCD_DEBUG
-printk ("GSCD: Status: %d\n", disk_state );
+	printk("GSCD: Status: %d\n", disk_state);
 #endif
 
 }
 
-void cmd_out ( int cmd_type, char * cmd, char * respo_buf, int respo_count )
+void cmd_out(int cmd_type, char *cmd, char *respo_buf, int respo_count)
 {
-int        result;
+	int result;
+
+
+	result = wait_drv_ready();
+	if (result != drv_mode) {
+		unsigned long test_loops = 0xFFFF;
+		int i, dummy;
 
+		outb(curr_drv_state, GSCDPORT(0));
 
-       result = wait_drv_ready ();
-       if ( result != drv_mode )
-       {
-       unsigned long test_loops = 0xFFFF;
-       int           i,dummy;
-
-          outb ( curr_drv_state, GSCDPORT(0));
-          
-          /* LOCLOOP_170 */
-          do
-          {
-             result = wait_drv_ready ();
-             test_loops--;
-          } while ( (result != drv_mode) && (test_loops > 0) );
-
-          if ( result != drv_mode )
-          {
-             disk_state = ST_x08 | ST_x04 | ST_INVALID;
-             return;
-          }          
-        
-          /* ...and waiting */
-          for ( i=1,dummy=1 ; i<0xFFFF ; i++ )
-          {
-             dummy *= i;
-          }              
-       }
-
-       /* LOC_172 */    
-       /* check the unit */
-       /* and wake it up */
-       if ( cmd_unit_alive () != 0x08 )
-       {
-          /* LOC_174 */
-          /* game over for this unit */
-          disk_state = ST_x08 | ST_x04 | ST_INVALID;
-          return;
-       }
-       
-       /* LOC_176 */
-       #ifdef GSCD_DEBUG
-        printk ("LOC_176 ");
-       #endif       
-       if ( drv_mode == 0x09 )
-       {
-          /* magic... */
-          printk ("GSCD: magic ...\n");       
-          outb ( result, GSCDPORT(2));
-       }
-
-       /* write the command to the drive */
-       cmd_write_cmd (cmd);
-
-       /* LOC_178 */
-       for (;;)
-       {
-          result = wait_drv_ready ();
-          if ( result != drv_mode )
-          {
-             /* LOC_179 */
-             if ( result == 0x04 )                  /* Mode 4 */
-             {
-                /* LOC_205 */
-                #ifdef GSCD_DEBUG
-                printk ("LOC_205 ");	              
-                #endif
-                disk_state = inb ( GSCDPORT (2));
-             
-                do
-                {
-                   result = wait_drv_ready ();
-                } while ( result != drv_mode );
-                return;
-
-             }
-             else
-             {
-                if ( result == 0x06 )               /* Mode 6 */
-                {
-                   /* LOC_181 */
-                   #ifdef GSCD_DEBUG
-                    printk ("LOC_181 ");	              
-                   #endif
-
-                   if (cmd_type == TYPE_DATA)
-                   {
-                      /* read data */
-                      /* LOC_184 */
-                      if ( drv_mode == 9 )
-                      {
-                         /* read the data to the buffer (word) */
- 
-                         /* (*(cmd+1))?(CD_FRAMESIZE/2):(CD_FRAMESIZE_RAW/2) */
-                         cmd_read_w ( respo_buf, respo_count, CD_FRAMESIZE/2 );
-                         return;
-                      } 
-                      else
-                      { 
-                         /* read the data to the buffer (byte) */
-                         
-                         /* (*(cmd+1))?(CD_FRAMESIZE):(CD_FRAMESIZE_RAW)    */
-                         cmd_read_b ( respo_buf, respo_count, CD_FRAMESIZE );
-                         return;
-                      }
-                   }
-                   else
-                   { 
-                      /* read the info to the buffer */
-                      cmd_info_in ( respo_buf, respo_count ); 
-                      return;
-                   }                  
-
-                   return;
-                }
-             }
-
-          }
-          else
-          {
-             disk_state = ST_x08 | ST_x04 | ST_INVALID;         
-             return;
-          }    
-       } /* for (;;) */
+		/* LOCLOOP_170 */
+		do {
+			result = wait_drv_ready();
+			test_loops--;
+		} while ((result != drv_mode) && (test_loops > 0));
 
+		if (result != drv_mode) {
+			disk_state = ST_x08 | ST_x04 | ST_INVALID;
+			return;
+		}
+
+		/* ...and waiting */
+		for (i = 1, dummy = 1; i < 0xFFFF; i++) {
+			dummy *= i;
+		}
+	}
 
+	/* LOC_172 */
+	/* check the unit */
+	/* and wake it up */
+	if (cmd_unit_alive() != 0x08) {
+		/* LOC_174 */
+		/* game over for this unit */
+		disk_state = ST_x08 | ST_x04 | ST_INVALID;
+		return;
+	}
+
+	/* LOC_176 */
 #ifdef GSCD_DEBUG
-printk ("\n");       
-#endif    
+	printk("LOC_176 ");
+#endif
+	if (drv_mode == 0x09) {
+		/* magic... */
+		printk("GSCD: magic ...\n");
+		outb(result, GSCDPORT(2));
+	}
+
+	/* write the command to the drive */
+	cmd_write_cmd(cmd);
+
+	/* LOC_178 */
+	for (;;) {
+		result = wait_drv_ready();
+		if (result != drv_mode) {
+			/* LOC_179 */
+			if (result == 0x04) {	/* Mode 4 */
+				/* LOC_205 */
+#ifdef GSCD_DEBUG
+				printk("LOC_205 ");
+#endif
+				disk_state = inb(GSCDPORT(2));
+
+				do {
+					result = wait_drv_ready();
+				} while (result != drv_mode);
+				return;
+
+			} else {
+				if (result == 0x06) {	/* Mode 6 */
+					/* LOC_181 */
+#ifdef GSCD_DEBUG
+					printk("LOC_181 ");
+#endif
+
+					if (cmd_type == TYPE_DATA) {
+						/* read data */
+						/* LOC_184 */
+						if (drv_mode == 9) {
+							/* read the data to the buffer (word) */
+
+							/* (*(cmd+1))?(CD_FRAMESIZE/2):(CD_FRAMESIZE_RAW/2) */
+							cmd_read_w
+							    (respo_buf,
+							     respo_count,
+							     CD_FRAMESIZE /
+							     2);
+							return;
+						} else {
+							/* read the data to the buffer (byte) */
+
+							/* (*(cmd+1))?(CD_FRAMESIZE):(CD_FRAMESIZE_RAW)    */
+							cmd_read_b
+							    (respo_buf,
+							     respo_count,
+							     CD_FRAMESIZE);
+							return;
+						}
+					} else {
+						/* read the info to the buffer */
+						cmd_info_in(respo_buf,
+							    respo_count);
+						return;
+					}
+
+					return;
+				}
+			}
+
+		} else {
+			disk_state = ST_x08 | ST_x04 | ST_INVALID;
+			return;
+		}
+	}			/* for (;;) */
+
+
+#ifdef GSCD_DEBUG
+	printk("\n");
+#endif
+}
+
+
+static void cmd_write_cmd(char *pstr)
+{
+	int i, j;
+
+	/* LOC_177 */
+#ifdef GSCD_DEBUG
+	printk("LOC_177 ");
+#endif
+
+	/* calculate the number of parameter */
+	j = *pstr & 0x0F;
+
+	/* shift it out */
+	for (i = 0; i < j; i++) {
+		outb(*pstr, GSCDPORT(2));
+		pstr++;
+	}
 }
 
 
-static void cmd_write_cmd ( char *pstr )
+static int cmd_unit_alive(void)
 {
-int  i,j;
+	int result;
+	unsigned long max_test_loops;
+
+
+	/* LOC_172 */
+#ifdef GSCD_DEBUG
+	printk("LOC_172 ");
+#endif
+
+	outb(curr_drv_state, GSCDPORT(0));
+	max_test_loops = 0xFFFF;
 
-    /* LOC_177 */
-    #ifdef GSCD_DEBUG
-     printk ("LOC_177 ");       
-    #endif
-       
-    /* calculate the number of parameter */
-    j = *pstr & 0x0F;
-
-    /* shift it out */
-    for ( i=0 ; i<j ; i++ )
-    {
-       outb ( *pstr, GSCDPORT(2) );
-       pstr++;
-    }
-}
-
-
-static int cmd_unit_alive ( void )
-{
-int            result;
-unsigned long  max_test_loops;
-
-
-    /* LOC_172 */
-    #ifdef GSCD_DEBUG
-     printk ("LOC_172 ");       
-    #endif
-
-    outb ( curr_drv_state, GSCDPORT(0));       
-    max_test_loops = 0xFFFF;
-     
-    do
-    {
-       result = wait_drv_ready ();
-       max_test_loops--;
-    } while ( (result != 0x08) && (max_test_loops > 0) );
-
-    return result;
-}       
-
-
-static void cmd_info_in ( char *pb, int count )
-{
-int   result;
-char  read;
-
-
-        /* read info */
-        /* LOC_182 */
-        #ifdef GSCD_DEBUG
-         printk ("LOC_182 ");				              
-        #endif
-       
-        do
-        {
-           read = inb (GSCDPORT(2)); 
-           if ( count > 0 )
-           {
-              *pb = read;
-              pb++;
-              count--;
-           }
-                         
-           /* LOC_183 */
-           do
-           {
-              result = wait_drv_ready ();
-           } while ( result == 0x0E );
-        } while ( result == 6 );                     
-
-        cmd_end ();
-        return;
-}
-
-
-static void cmd_read_b ( char *pb, int count, int size )
-{
-int  result;
-int  i;
-                     
-                     
-       /* LOC_188 */
-       /* LOC_189 */
-       #ifdef GSCD_DEBUG
-        printk ("LOC_189 ");			              
-       #endif
-
-       do 
-       {
-          do
-          {
-             result = wait_drv_ready ();
-          } while ( result != 6 || result == 0x0E );
-                         
-          if ( result != 6 )
-          {
-             cmd_end ();
-             return;
-          }                       
-          
-          #ifdef GSCD_DEBUG
-           printk ("LOC_191 ");       
-          #endif
-
-          for ( i=0 ; i< size ; i++ )
-          {
-             *pb = inb (GSCDPORT(2));
-             pb++;
-          }
-          count--;
-       } while ( count > 0 );
-       
-       cmd_end ();
-       return;
-}
-
-
-static void cmd_end (void)
-{
-int   result;
-
-
-      /* LOC_204 */
-      #ifdef GSCD_DEBUG
-       printk ("LOC_204 ");				              
-      #endif
-      
-      do
-      {
-         result = wait_drv_ready ();
-         if ( result == drv_mode )
-         {
-            return;
-         }
-      } while ( result != 4 );
-
-      /* LOC_205 */
-      #ifdef GSCD_DEBUG
-       printk ("LOC_205 ");			              
-      #endif
-       
-      disk_state = inb ( GSCDPORT (2));
-             
-      do
-      {
-         result = wait_drv_ready ();
-      } while ( result != drv_mode );
-      return;
-
-}
-
-
-static void cmd_read_w ( char *pb, int count, int size )
-{
-int  result;
-int  i;
-
-
-    #ifdef GSCD_DEBUG
-     printk ("LOC_185 ");			              
-    #endif
- 
-    do 
-    {
-       /* LOC_185 */
-       do
-       {
-          result = wait_drv_ready ();
-       } while ( result != 6 || result == 0x0E );
-                         
-       if ( result != 6 )
-       {
-          cmd_end ();
-          return;
-       }                       
-                         
-       for ( i=0 ; i<size ; i++ )
-       {
-           /* na, hier muss ich noch mal drueber nachdenken */
-           *pb = inw(GSCDPORT(2));
-           pb++;
-        }
-        count--;
-     } while ( count > 0 );
-                    
-     cmd_end ();
-     return;
-}
-
-int __init find_drives (void)
-{
-int *pdrv;
-int drvnum;
-int subdrv;
-int i;
-
-    speed           = 0;
-    pdrv            = (int *)&drv_states;
-    curr_drv_state  = 0xFE;
-    subdrv          = 0;
-    drvnum          = 0;
-
-    for ( i=0 ; i<8 ; i++ )
-    { 
-       subdrv++;
-       cmd_status ();
-       disk_state &= ST_x08 | ST_x04 | ST_INVALID | ST_x01;
-       if ( disk_state != (ST_x08 | ST_x04 | ST_INVALID) )
-       {
-          /* LOC_240 */
-          *pdrv = curr_drv_state;
-          init_cd_drive (drvnum);
-          pdrv++;
-          drvnum++;
-       }
-       else
-       {
-          if ( subdrv < 2 )
-          {
-             continue;
-          }
-          else
-          {
-             subdrv = 0;
-          }
-       }   
+	do {
+		result = wait_drv_ready();
+		max_test_loops--;
+	} while ((result != 0x08) && (max_test_loops > 0));
+
+	return result;
+}
 
-/*       curr_drv_state<<1;         <-- das geht irgendwie nicht */ 
+
+static void cmd_info_in(char *pb, int count)
+{
+	int result;
+	char read;
+
+
+	/* read info */
+	/* LOC_182 */
+#ifdef GSCD_DEBUG
+	printk("LOC_182 ");
+#endif
+
+	do {
+		read = inb(GSCDPORT(2));
+		if (count > 0) {
+			*pb = read;
+			pb++;
+			count--;
+		}
+
+		/* LOC_183 */
+		do {
+			result = wait_drv_ready();
+		} while (result == 0x0E);
+	} while (result == 6);
+
+	cmd_end();
+	return;
+}
+
+
+static void cmd_read_b(char *pb, int count, int size)
+{
+	int result;
+	int i;
+
+
+	/* LOC_188 */
+	/* LOC_189 */
+#ifdef GSCD_DEBUG
+	printk("LOC_189 ");
+#endif
+
+	do {
+		do {
+			result = wait_drv_ready();
+		} while (result != 6 || result == 0x0E);
+
+		if (result != 6) {
+			cmd_end();
+			return;
+		}
+#ifdef GSCD_DEBUG
+		printk("LOC_191 ");
+#endif
+
+		for (i = 0; i < size; i++) {
+			*pb = inb(GSCDPORT(2));
+			pb++;
+		}
+		count--;
+	} while (count > 0);
+
+	cmd_end();
+	return;
+}
+
+
+static void cmd_end(void)
+{
+	int result;
+
+
+	/* LOC_204 */
+#ifdef GSCD_DEBUG
+	printk("LOC_204 ");
+#endif
+
+	do {
+		result = wait_drv_ready();
+		if (result == drv_mode) {
+			return;
+		}
+	} while (result != 4);
+
+	/* LOC_205 */
+#ifdef GSCD_DEBUG
+	printk("LOC_205 ");
+#endif
+
+	disk_state = inb(GSCDPORT(2));
+
+	do {
+		result = wait_drv_ready();
+	} while (result != drv_mode);
+	return;
+
+}
+
+
+static void cmd_read_w(char *pb, int count, int size)
+{
+	int result;
+	int i;
+
+
+#ifdef GSCD_DEBUG
+	printk("LOC_185 ");
+#endif
+
+	do {
+		/* LOC_185 */
+		do {
+			result = wait_drv_ready();
+		} while (result != 6 || result == 0x0E);
+
+		if (result != 6) {
+			cmd_end();
+			return;
+		}
+
+		for (i = 0; i < size; i++) {
+			/* na, hier muss ich noch mal drueber nachdenken */
+			*pb = inw(GSCDPORT(2));
+			pb++;
+		}
+		count--;
+	} while (count > 0);
+
+	cmd_end();
+	return;
+}
+
+int __init find_drives(void)
+{
+	int *pdrv;
+	int drvnum;
+	int subdrv;
+	int i;
+
+	speed = 0;
+	pdrv = (int *) &drv_states;
+	curr_drv_state = 0xFE;
+	subdrv = 0;
+	drvnum = 0;
+
+	for (i = 0; i < 8; i++) {
+		subdrv++;
+		cmd_status();
+		disk_state &= ST_x08 | ST_x04 | ST_INVALID | ST_x01;
+		if (disk_state != (ST_x08 | ST_x04 | ST_INVALID)) {
+			/* LOC_240 */
+			*pdrv = curr_drv_state;
+			init_cd_drive(drvnum);
+			pdrv++;
+			drvnum++;
+		} else {
+			if (subdrv < 2) {
+				continue;
+			} else {
+				subdrv = 0;
+			}
+		}
+
+/*       curr_drv_state<<1;         <-- das geht irgendwie nicht */
 /* muss heissen:    curr_drv_state <<= 1; (ist ja Wert-Zuweisung) */
-         curr_drv_state *= 2;
-         curr_drv_state |= 1;
+		curr_drv_state *= 2;
+		curr_drv_state |= 1;
 #ifdef GSCD_DEBUG
-         printk ("DriveState: %d\n", curr_drv_state );
+		printk("DriveState: %d\n", curr_drv_state);
 #endif
-    } 
+	}
 
-    ndrives = drvnum;
-    return drvnum;
-}    
+	ndrives = drvnum;
+	return drvnum;
+}
 
-void __init init_cd_drive ( int num )
+void __init init_cd_drive(int num)
 {
-char resp [50];
-int  i;
+	char resp[50];
+	int i;
 
-   printk ("GSCD: init unit %d\n", num );
-   cc_Ident ((char *)&resp);
+	printk("GSCD: init unit %d\n", num);
+	cc_Ident((char *) &resp);
 
-   printk ("GSCD: identification: ");
-   for ( i=0 ; i<0x1E; i++ )
-   {
-      printk ( "%c", resp[i] );
-   }
-   printk ("\n");
-   
-   cc_SetSpeed ();  
+	printk("GSCD: identification: ");
+	for (i = 0; i < 0x1E; i++) {
+		printk("%c", resp[i]);
+	}
+	printk("\n");
 
-}    
+	cc_SetSpeed();
+
+}
 
 #ifdef FUTURE_WORK
 /* return_done */
-static void update_state ( void )
+static void update_state(void)
 {
-unsigned int AX;
+	unsigned int AX;
+
+
+	if ((disk_state & (ST_x08 | ST_x04 | ST_INVALID | ST_x01)) == 0) {
+		if (disk_state == (ST_x08 | ST_x04 | ST_INVALID)) {
+			AX = ST_INVALID;
+		}
+
+		if ((disk_state & (ST_x08 | ST_x04 | ST_INVALID | ST_x01))
+		    == 0) {
+			invalidate();
+			f_drv_ok = 0;
+		}
+
+		AX |= 0x8000;
+	}
+
+	if (disk_state & ST_PLAYING) {
+		AX |= 0x200;
+	}
 
+	AX |= 0x100;
+	/* pkt_esbx = AX; */
 
-    if ( (disk_state & (ST_x08 | ST_x04 | ST_INVALID | ST_x01)) == 0 )
-    {
-       if ( disk_state == (ST_x08 | ST_x04 | ST_INVALID))
-       {
-          AX = ST_INVALID;
-       }
-  
-       if ( (disk_state & (ST_x08 | ST_x04 | ST_INVALID | ST_x01)) == 0 )
-       {
-          invalidate ();
-          f_drv_ok = 0;
-       }
-       
-       AX |= 0x8000;
-    }
-    
-    if ( disk_state & ST_PLAYING )
-    {
-       AX |= 0x200;
-    }
-    
-    AX |= 0x100;
-    /* pkt_esbx = AX; */
+	disk_state = 0;
 
-    disk_state = 0;
-    
 }
 #endif
 
 /* Init for the Module-Version */
 int init_gscd(void)
 {
-long err;
+	long err;
 
 
-     /* call the GoldStar-init */
-     err = my_gscd_init ( );
+	/* call the GoldStar-init */
+	err = my_gscd_init();
 
-     if ( err < 0 )
-     {
-         return err;
-     }
-     else
-     {
-        printk (KERN_INFO "Happy GoldStar !\n" );
-        return 0;
-     }    
+	if (err < 0) {
+		return err;
+	} else {
+		printk(KERN_INFO "Happy GoldStar !\n");
+		return 0;
+	}
 }
 
 void __exit exit_gscd(void)
 {
-   CLEAR_TIMER;
+	CLEAR_TIMER;
 
-   devfs_unregister(devfs_find_handle(NULL, "gscd", 0, 0, DEVFS_SPECIAL_BLK,
-				      0));
-   if ((devfs_unregister_blkdev(MAJOR_NR, "gscd" ) == -EINVAL))
-   {
-      printk("What's that: can't unregister GoldStar-module\n" );
-      return;
-   }
-   blk_cleanup_queue(BLK_DEFAULT_QUEUE(MAJOR_NR));
-   release_region (gscd_port,4);
-   printk(KERN_INFO "GoldStar-module released.\n" );
+	devfs_unregister(devfs_find_handle
+			 (NULL, "gscd", 0, 0, DEVFS_SPECIAL_BLK, 0));
+	if ((devfs_unregister_blkdev(MAJOR_NR, "gscd") == -EINVAL)) {
+		printk("What's that: can't unregister GoldStar-module\n");
+		return;
+	}
+	blk_cleanup_queue(BLK_DEFAULT_QUEUE(MAJOR_NR));
+	release_region(gscd_port, 4);
+	printk(KERN_INFO "GoldStar-module released.\n");
 }
 
 #ifdef MODULE
 module_init(init_gscd);
-#endif 
+#endif
 module_exit(exit_gscd);
 
 
 /* Test for presence of drive and initialize it.  Called only at boot time. */
-int __init gscd_init (void)
+int __init gscd_init(void)
 {
-   return my_gscd_init ();
+	return my_gscd_init();
 }
 
 
 /* This is the common initialisation for the GoldStar drive. */
 /* It is called at boot time AND for module init.           */
-int __init my_gscd_init (void)
+int __init my_gscd_init(void)
 {
-int i;
-int result;
+	int i;
+	int result;
 
-        printk (KERN_INFO "GSCD: version %s\n", GSCD_VERSION);
-        printk (KERN_INFO "GSCD: Trying to detect a Goldstar R420 CD-ROM drive at 0x%X.\n", gscd_port);
-
-        if (check_region(gscd_port, 4)) 
-        {
-	  printk("GSCD: Init failed, I/O port (%X) already in use.\n", gscd_port);
-	  return -EIO;
+	printk(KERN_INFO "GSCD: version %s\n", GSCD_VERSION);
+	printk(KERN_INFO
+	       "GSCD: Trying to detect a Goldstar R420 CD-ROM drive at 0x%X.\n",
+	       gscd_port);
+
+	if (check_region(gscd_port, 4)) {
+		printk
+		    ("GSCD: Init failed, I/O port (%X) already in use.\n",
+		     gscd_port);
+		return -EIO;
 	}
-	  
+
 
 	/* check for card */
-	result = wait_drv_ready ();
-        if ( result == 0x09 )
-        {
-           printk ("GSCD: DMA kann ich noch nicht!\n" );
-           return -EIO;
-        }
- 
-        if ( result == 0x0b )
-        {
-           drv_mode = result;
-           i = find_drives ();
-           if ( i == 0 )
-           {
-              printk ( "GSCD: GoldStar CD-ROM Drive is not found.\n" );
-              return -EIO;
-           }
-        }
-
-        if ( (result != 0x0b) && (result != 0x09) )
-        {
-              printk ("GSCD: GoldStar Interface Adapter does not exist or H/W error\n" );
-              return -EIO;
-        }          		            
-
-        /* reset all drives */
-        i = 0;
-        while ( drv_states[i] != 0 )
-        {
-           curr_drv_state = drv_states[i];
-           printk (KERN_INFO "GSCD: Reset unit %d ... ",i );
-           cc_Reset ();
-           printk ( "done\n" );
-           i++;
-        }
-
-	if (devfs_register_blkdev(MAJOR_NR, "gscd", &gscd_fops) != 0)
-	{
-		printk("GSCD: Unable to get major %d for GoldStar CD-ROM\n",
-		       MAJOR_NR);
+	result = wait_drv_ready();
+	if (result == 0x09) {
+		printk("GSCD: DMA kann ich noch nicht!\n");
 		return -EIO;
 	}
-	devfs_register (NULL, "gscd", DEVFS_FL_DEFAULT, MAJOR_NR, 0,
-			S_IFBLK | S_IRUGO | S_IWUGO, &gscd_fops, NULL);
+
+	if (result == 0x0b) {
+		drv_mode = result;
+		i = find_drives();
+		if (i == 0) {
+			printk
+			    ("GSCD: GoldStar CD-ROM Drive is not found.\n");
+			return -EIO;
+		}
+	}
+
+	if ((result != 0x0b) && (result != 0x09)) {
+		printk
+		    ("GSCD: GoldStar Interface Adapter does not exist or H/W error\n");
+		return -EIO;
+	}
+
+	/* reset all drives */
+	i = 0;
+	while (drv_states[i] != 0) {
+		curr_drv_state = drv_states[i];
+		printk(KERN_INFO "GSCD: Reset unit %d ... ", i);
+		cc_Reset();
+		printk("done\n");
+		i++;
+	}
+
+	if (devfs_register_blkdev(MAJOR_NR, "gscd", &gscd_fops) != 0) {
+		printk
+		    ("GSCD: Unable to get major %d for GoldStar CD-ROM\n",
+		     MAJOR_NR);
+		return -EIO;
+	}
+	devfs_register(NULL, "gscd", DEVFS_FL_DEFAULT, MAJOR_NR, 0,
+		       S_IFBLK | S_IRUGO | S_IWUGO, &gscd_fops, NULL);
 
 	blk_init_queue(BLK_DEFAULT_QUEUE(MAJOR_NR), DEVICE_REQUEST);
 	blksize_size[MAJOR_NR] = gscd_blocksizes;
 	read_ahead[MAJOR_NR] = 4;
-        
-        disk_state = 0;
-        gscdPresent = 1;
+
+	disk_state = 0;
+	gscdPresent = 1;
 
 	request_region(gscd_port, 4, "gscd");
-	register_disk(NULL, MKDEV(MAJOR_NR,0), 1, &gscd_fops, 0);
+	register_disk(NULL, MKDEV(MAJOR_NR, 0), 1, &gscd_fops, 0);
 
-        printk (KERN_INFO "GSCD: GoldStar CD-ROM Drive found.\n" );
+	printk(KERN_INFO "GSCD: GoldStar CD-ROM Drive found.\n");
 	return 0;
 }
 
-static void gscd_hsg2msf (long hsg, struct msf *msf)
+static void gscd_hsg2msf(long hsg, struct msf *msf)
 {
 	hsg += CD_MSF_OFFSET;
-	msf -> min = hsg / (CD_FRAMES*CD_SECS);
-	hsg %= CD_FRAMES*CD_SECS;
-	msf -> sec = hsg / CD_FRAMES;
-	msf -> frame = hsg % CD_FRAMES;
+	msf->min = hsg / (CD_FRAMES * CD_SECS);
+	hsg %= CD_FRAMES * CD_SECS;
+	msf->sec = hsg / CD_FRAMES;
+	msf->frame = hsg % CD_FRAMES;
 
-	gscd_bin2bcd(&msf -> min);		/* convert to BCD */
-	gscd_bin2bcd(&msf -> sec);
-	gscd_bin2bcd(&msf -> frame);
+	gscd_bin2bcd(&msf->min);	/* convert to BCD */
+	gscd_bin2bcd(&msf->sec);
+	gscd_bin2bcd(&msf->frame);
 }
- 
 
-static void gscd_bin2bcd (unsigned char *p)
+
+static void gscd_bin2bcd(unsigned char *p)
 {
-int u, t;
+	int u, t;
 
 	u = *p % 10;
 	t = *p / 10;
@@ -1123,18 +1061,19 @@
 
 
 #ifdef FUTURE_WORK
-static long gscd_msf2hsg (struct msf *mp)
+static long gscd_msf2hsg(struct msf *mp)
 {
-	return gscd_bcd2bin(mp -> frame)
-		+ gscd_bcd2bin(mp -> sec) * CD_FRAMES
-		+ gscd_bcd2bin(mp -> min) * CD_FRAMES * CD_SECS
-		- CD_MSF_OFFSET;
+	return gscd_bcd2bin(mp->frame)
+	    + gscd_bcd2bin(mp->sec) * CD_FRAMES
+	    + gscd_bcd2bin(mp->min) * CD_FRAMES * CD_SECS - CD_MSF_OFFSET;
 }
 
-static int gscd_bcd2bin (unsigned char bcd)
+static int gscd_bcd2bin(unsigned char bcd)
 {
 	return (bcd >> 4) * 10 + (bcd & 0xF);
 }
 #endif
 
-
+MODULE_AUTHOR("Oliver Raupach <raupach@nwfs1.rz.fh-hannover.de>");
+MODULE_LICENSE("GPL");
+EXPORT_NO_SYMBOLS;

FUNET's LINUX-ADM group, linux-adm@nic.funet.fi
TCL-scripts by Sam Shen (who was at: slshen@lbl.gov)