diff options
| author | Alexander Viro <viro@math.psu.edu> | 2002-09-21 02:51:21 -0700 |
|---|---|---|
| committer | Linus Torvalds <torvalds@home.transmeta.com> | 2002-09-21 02:51:21 -0700 |
| commit | 0e6d01f3289efee3d6e0c97d93b613d5578d2dd1 (patch) | |
| tree | 98a5fadf56e1ecf4c65b1a533c3142fb2082f00d /drivers | |
| parent | 4da35fb87b5ed8628ad9953244a44efc7ae29aca (diff) | |
[PATCH] gendisk for gscd
gscd switched to use of gendisk; missing initcall restored
Diffstat (limited to 'drivers')
| -rw-r--r-- | drivers/cdrom/gscd.c | 91 |
1 files changed, 29 insertions, 62 deletions
diff --git a/drivers/cdrom/gscd.c b/drivers/cdrom/gscd.c index b37b983eeaad..3e332b7beefe 100644 --- a/drivers/cdrom/gscd.c +++ b/drivers/cdrom/gscd.c @@ -86,14 +86,12 @@ MODULE_PARM(gscd, "h"); * 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); /* 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); @@ -103,13 +101,8 @@ 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); @@ -123,10 +116,6 @@ static long gscd_msf2hsg(struct msf *mp); static int gscd_bcd2bin(unsigned char bcd); #endif -/* common GoldStar Initialization */ - -static int my_gscd_init(void); - /* lo-level cmd-Funktionen */ @@ -164,11 +153,11 @@ static struct timer_list gscd_timer; static spinlock_t gscd_lock = SPIN_LOCK_UNLOCKED; static struct block_device_operations gscd_fops = { - owner:THIS_MODULE, - open:gscd_open, - release:gscd_release, - ioctl:gscd_ioctl, - check_media_change:check_gscd_med_chg, + .owner = THIS_MODULE, + .open = gscd_open, + .release = gscd_release, + .ioctl = gscd_ioctl, + .check_media_change = check_gscd_med_chg, }; /* @@ -414,7 +403,7 @@ static int gscd_release(struct inode *inode, struct file *file) } -int get_status(void) +static int get_status(void) { int status; @@ -430,7 +419,7 @@ int get_status(void) } -void cc_invalidate(void) +static void cc_invalidate(void) { drv_num_read = 0xFF; f_dsk_valid = 0xFF; @@ -441,7 +430,7 @@ void cc_invalidate(void) } -void clear_Audio(void) +static void clear_Audio(void) { f_AudioPlay = 0; @@ -457,7 +446,7 @@ void clear_Audio(void) * waiting ? */ -int wait_drv_ready(void) +static int wait_drv_ready(void) { int found, read; @@ -475,7 +464,7 @@ int wait_drv_ready(void) return read; } -void cc_Ident(char *respons) +static void cc_Ident(char *respons) { char to_do[] = { CMD_IDENT, 0, 0 }; @@ -483,7 +472,7 @@ void cc_Ident(char *respons) } -void cc_SetSpeed(void) +static void cc_SetSpeed(void) { char to_do[] = { CMD_SETSPEED, 0, 0 }; char dummy; @@ -494,8 +483,7 @@ void cc_SetSpeed(void) } } - -void cc_Reset(void) +static void cc_Reset(void) { char to_do[] = { CMD_RESET, 0 }; char dummy; @@ -503,9 +491,7 @@ void cc_Reset(void) cmd_out(TYPE_INFO, (char *) &to_do, (char *) &dummy, 0); } - - -void cmd_status(void) +static void cmd_status(void) { char to_do[] = { CMD_STATUS, 0 }; char dummy; @@ -518,7 +504,7 @@ void cmd_status(void) } -void cmd_out(int cmd_type, char *cmd, char *respo_buf, int respo_count) +static void cmd_out(int cmd_type, char *cmd, char *respo_buf, int respo_count) { int result; @@ -817,7 +803,7 @@ static void cmd_read_w(char *pb, int count, int size) return; } -int __init find_drives(void) +static int __init find_drives(void) { int *pdrv; int drvnum; @@ -861,7 +847,7 @@ int __init find_drives(void) return drvnum; } -void __init init_cd_drive(int num) +static void __init init_cd_drive(int num) { char resp[50]; int i; @@ -912,28 +898,20 @@ static void update_state(void) } #endif -/* Init for the Module-Version */ -int init_gscd(void) -{ - long err; - - - /* call the GoldStar-init */ - err = my_gscd_init(); - - if (err < 0) { - return err; - } else { - printk(KERN_INFO "Happy GoldStar !\n"); - return 0; - } -} +static struct gendisk gscd_disk = { + .major = MAJOR_NR, + .first_minor = 0, + ,minor_shift = 0, + .fops = &gscd_fops, + .major_name = "gscd" +}; -void __exit exit_gscd(void) +static void __exit gscd_exit(void) { CLEAR_TIMER; devfs_find_and_unregister(NULL, "gscd", 0, 0, DEVFS_SPECIAL_BLK, 0); + del_gendisk(&gscd_disk); if ((unregister_blkdev(MAJOR_NR, "gscd") == -EINVAL)) { printk("What's that: can't unregister GoldStar-module\n"); return; @@ -943,22 +921,9 @@ void __exit exit_gscd(void) printk(KERN_INFO "GoldStar-module released.\n"); } -#ifdef MODULE -module_init(init_gscd); -#endif -module_exit(exit_gscd); - - -/* Test for presence of drive and initialize it. Called only at boot time. */ -int __init gscd_init(void) -{ - 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) +static int __init gscd_init(void) { int i; int result; @@ -1026,7 +991,7 @@ int __init my_gscd_init(void) disk_state = 0; gscdPresent = 1; - register_disk(NULL, mk_kdev(MAJOR_NR, 0), 1, &gscd_fops, 0); + add_disk(&gscd_disk); printk(KERN_INFO "GSCD: GoldStar CD-ROM Drive found.\n"); return 0; @@ -1075,3 +1040,5 @@ static int gscd_bcd2bin(unsigned char bcd) MODULE_AUTHOR("Oliver Raupach <raupach@nwfs1.rz.fh-hannover.de>"); MODULE_LICENSE("GPL"); +module_init(gscd_init); +module_exit(gscd_exit); |
