]> err.no Git - linux-2.6/blobdiff - drivers/ide/ide-proc.c
Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound-2.6
[linux-2.6] / drivers / ide / ide-proc.c
index bab88ca7f7ecb953495cd09c17d979a395ae5fd9..8d6ad812a014e3e4a5ea3c1611874d550e3d4bf1 100644 (file)
@@ -46,32 +46,29 @@ static int proc_ide_read_imodel
        int             len;
        const char      *name;
 
-       /*
-        * Neither ide_unknown nor ide_forced should be set at this point.
-        */
        switch (hwif->chipset) {
-               case ide_generic:       name = "generic";       break;
-               case ide_pci:           name = "pci";           break;
-               case ide_cmd640:        name = "cmd640";        break;
-               case ide_dtc2278:       name = "dtc2278";       break;
-               case ide_ali14xx:       name = "ali14xx";       break;
-               case ide_qd65xx:        name = "qd65xx";        break;
-               case ide_umc8672:       name = "umc8672";       break;
-               case ide_ht6560b:       name = "ht6560b";       break;
-               case ide_rz1000:        name = "rz1000";        break;
-               case ide_trm290:        name = "trm290";        break;
-               case ide_cmd646:        name = "cmd646";        break;
-               case ide_cy82c693:      name = "cy82c693";      break;
-               case ide_4drives:       name = "4drives";       break;
-               case ide_pmac:          name = "mac-io";        break;
-               case ide_au1xxx:        name = "au1xxx";        break;
-               case ide_palm3710:      name = "palm3710";      break;
-               case ide_etrax100:      name = "etrax100";      break;
-               case ide_acorn:         name = "acorn";         break;
-               default:                name = "(unknown)";     break;
+       case ide_generic:       name = "generic";       break;
+       case ide_pci:           name = "pci";           break;
+       case ide_cmd640:        name = "cmd640";        break;
+       case ide_dtc2278:       name = "dtc2278";       break;
+       case ide_ali14xx:       name = "ali14xx";       break;
+       case ide_qd65xx:        name = "qd65xx";        break;
+       case ide_umc8672:       name = "umc8672";       break;
+       case ide_ht6560b:       name = "ht6560b";       break;
+       case ide_rz1000:        name = "rz1000";        break;
+       case ide_trm290:        name = "trm290";        break;
+       case ide_cmd646:        name = "cmd646";        break;
+       case ide_cy82c693:      name = "cy82c693";      break;
+       case ide_4drives:       name = "4drives";       break;
+       case ide_pmac:          name = "mac-io";        break;
+       case ide_au1xxx:        name = "au1xxx";        break;
+       case ide_palm3710:      name = "palm3710";      break;
+       case ide_etrax100:      name = "etrax100";      break;
+       case ide_acorn:         name = "acorn";         break;
+       default:                name = "(unknown)";     break;
        }
        len = sprintf(page, "%s\n", name);
-       PROC_IDE_READ_RETURN(page,start,off,count,eof,len);
+       PROC_IDE_READ_RETURN(page, start, off, count, eof, len);
 }
 
 static int proc_ide_read_mate
@@ -84,7 +81,7 @@ static int proc_ide_read_mate
                len = sprintf(page, "%s\n", hwif->mate->name);
        else
                len = sprintf(page, "(none)\n");
-       PROC_IDE_READ_RETURN(page,start,off,count,eof,len);
+       PROC_IDE_READ_RETURN(page, start, off, count, eof, len);
 }
 
 static int proc_ide_read_channel
@@ -96,7 +93,7 @@ static int proc_ide_read_channel
        page[0] = hwif->channel ? '1' : '0';
        page[1] = '\n';
        len = 2;
-       PROC_IDE_READ_RETURN(page,start,off,count,eof,len);
+       PROC_IDE_READ_RETURN(page, start, off, count, eof, len);
 }
 
 static int proc_ide_read_identify
@@ -123,7 +120,7 @@ static int proc_ide_read_identify
                        len = out - page;
                }
        }
-       PROC_IDE_READ_RETURN(page,start,off,count,eof,len);
+       PROC_IDE_READ_RETURN(page, start, off, count, eof, len);
 }
 
 /**
@@ -200,7 +197,7 @@ EXPORT_SYMBOL(ide_add_setting);
  *     The caller must hold the setting semaphore.
  */
 
-static void __ide_remove_setting (ide_drive_t *drive, char *name)
+static void __ide_remove_setting(ide_drive_t *drive, char *name)
 {
        ide_settings_t **p, *setting;
 
@@ -208,7 +205,8 @@ static void __ide_remove_setting (ide_drive_t *drive, char *name)
 
        while ((*p) && strcmp((*p)->name, name))
                p = &((*p)->next);
-       if ((setting = (*p)) == NULL)
+       setting = (*p);
+       if (setting == NULL)
                return;
 
        (*p) = setting->next;
@@ -226,7 +224,7 @@ static void __ide_remove_setting (ide_drive_t *drive, char *name)
  *     caller must hold ide_setting_mtx.
  */
 
-static void auto_remove_settings (ide_drive_t *drive)
+static void auto_remove_settings(ide_drive_t *drive)
 {
        ide_settings_t *setting;
 repeat:
@@ -282,16 +280,16 @@ static int ide_read_setting(ide_drive_t *drive, ide_settings_t *setting)
 
        if ((setting->rw & SETTING_READ)) {
                spin_lock_irqsave(&ide_lock, flags);
-               switch(setting->data_type) {
-                       case TYPE_BYTE:
-                               val = *((u8 *) setting->data);
-                               break;
-                       case TYPE_SHORT:
-                               val = *((u16 *) setting->data);
-                               break;
-                       case TYPE_INT:
-                               val = *((u32 *) setting->data);
-                               break;
+               switch (setting->data_type) {
+               case TYPE_BYTE:
+                       val = *((u8 *) setting->data);
+                       break;
+               case TYPE_SHORT:
+                       val = *((u16 *) setting->data);
+                       break;
+               case TYPE_INT:
+                       val = *((u32 *) setting->data);
+                       break;
                }
                spin_unlock_irqrestore(&ide_lock, flags);
        }
@@ -329,15 +327,15 @@ static int ide_write_setting(ide_drive_t *drive, ide_settings_t *setting, int va
        if (ide_spin_wait_hwgroup(drive))
                return -EBUSY;
        switch (setting->data_type) {
-               case TYPE_BYTE:
-                       *((u8 *) setting->data) = val;
-                       break;
-               case TYPE_SHORT:
-                       *((u16 *) setting->data) = val;
-                       break;
-               case TYPE_INT:
-                       *((u32 *) setting->data) = val;
-                       break;
+       case TYPE_BYTE:
+               *((u8 *) setting->data) = val;
+               break;
+       case TYPE_SHORT:
+               *((u16 *) setting->data) = val;
+               break;
+       case TYPE_INT:
+               *((u32 *) setting->data) = val;
+               break;
        }
        spin_unlock_irq(&ide_lock);
        return 0;
@@ -393,7 +391,7 @@ void ide_add_generic_settings (ide_drive_t *drive)
 
 static void proc_ide_settings_warn(void)
 {
-       static int warned = 0;
+       static int warned;
 
        if (warned)
                return;
@@ -416,11 +414,12 @@ static int proc_ide_read_settings
        mutex_lock(&ide_setting_mtx);
        out += sprintf(out, "name\t\t\tvalue\t\tmin\t\tmax\t\tmode\n");
        out += sprintf(out, "----\t\t\t-----\t\t---\t\t---\t\t----\n");
-       while(setting) {
+       while (setting) {
                mul_factor = setting->mul_factor;
                div_factor = setting->div_factor;
                out += sprintf(out, "%-24s", setting->name);
-               if ((rc = ide_read_setting(drive, setting)) >= 0)
+               rc = ide_read_setting(drive, setting);
+               if (rc >= 0)
                        out += sprintf(out, "%-16d", rc * mul_factor / div_factor);
                else
                        out += sprintf(out, "%-16s", "write-only");
@@ -434,7 +433,7 @@ static int proc_ide_read_settings
        }
        len = out - page;
        mutex_unlock(&ide_setting_mtx);
-       PROC_IDE_READ_RETURN(page,start,off,count,eof,len);
+       PROC_IDE_READ_RETURN(page, start, off, count, eof, len);
 }
 
 #define MAX_LEN        30
@@ -515,8 +514,7 @@ static int proc_ide_write_settings(struct file *file, const char __user *buffer,
 
                        mutex_lock(&ide_setting_mtx);
                        setting = ide_find_setting_by_name(drive, name);
-                       if (!setting)
-                       {
+                       if (!setting) {
                                mutex_unlock(&ide_setting_mtx);
                                goto parse_error;
                        }
@@ -536,8 +534,8 @@ parse_error:
 int proc_ide_read_capacity
        (char *page, char **start, off_t off, int count, int *eof, void *data)
 {
-       int len = sprintf(page,"%llu\n", (long long)0x7fffffff);
-       PROC_IDE_READ_RETURN(page,start,off,count,eof,len);
+       int len = sprintf(page, "%llu\n", (long long)0x7fffffff);
+       PROC_IDE_READ_RETURN(page, start, off, count, eof, len);
 }
 
 EXPORT_SYMBOL_GPL(proc_ide_read_capacity);
@@ -549,13 +547,13 @@ int proc_ide_read_geometry
        char            *out = page;
        int             len;
 
-       out += sprintf(out,"physical     %d/%d/%d\n",
+       out += sprintf(out, "physical     %d/%d/%d\n",
                        drive->cyl, drive->head, drive->sect);
-       out += sprintf(out,"logical      %d/%d/%d\n",
+       out += sprintf(out, "logical      %d/%d/%d\n",
                        drive->bios_cyl, drive->bios_head, drive->bios_sect);
 
        len = out - page;
-       PROC_IDE_READ_RETURN(page,start,off,count,eof,len);
+       PROC_IDE_READ_RETURN(page, start, off, count, eof, len);
 }
 
 EXPORT_SYMBOL(proc_ide_read_geometry);
@@ -569,7 +567,7 @@ static int proc_ide_read_dmodel
 
        len = sprintf(page, "%.40s\n",
                (id && id->model[0]) ? (char *)id->model : "(none)");
-       PROC_IDE_READ_RETURN(page,start,off,count,eof,len);
+       PROC_IDE_READ_RETURN(page, start, off, count, eof, len);
 }
 
 static int proc_ide_read_driver
@@ -586,7 +584,7 @@ static int proc_ide_read_driver
                                dev->driver->name, ide_drv->version);
        } else
                len = sprintf(page, "ide-default version 0.9.newide\n");
-       PROC_IDE_READ_RETURN(page,start,off,count,eof,len);
+       PROC_IDE_READ_RETURN(page, start, off, count, eof, len);
 }
 
 static int ide_replace_subdriver(ide_drive_t *drive, const char *driver)
@@ -601,14 +599,14 @@ static int ide_replace_subdriver(ide_drive_t *drive, const char *driver)
        err = device_attach(dev);
        if (err < 0)
                printk(KERN_WARNING "IDE: %s: device_attach error: %d\n",
-                       __FUNCTION__, err);
+                       __func__, err);
        drive->driver_req[0] = 0;
        if (dev->driver == NULL) {
                err = device_attach(dev);
                if (err < 0)
                        printk(KERN_WARNING
                                "IDE: %s: device_attach(2) error: %d\n",
-                               __FUNCTION__, err);
+                               __func__, err);
        }
        if (dev->driver && !strcmp(dev->driver->name, driver))
                ret = 0;
@@ -642,30 +640,26 @@ static int proc_ide_read_media
        int             len;
 
        switch (drive->media) {
-               case ide_disk:  media = "disk\n";
-                               break;
-               case ide_cdrom: media = "cdrom\n";
-                               break;
-               case ide_tape:  media = "tape\n";
-                               break;
-               case ide_floppy:media = "floppy\n";
-                               break;
-               case ide_optical:media = "optical\n";
-                               break;
-               default:        media = "UNKNOWN\n";
-                               break;
+       case ide_disk:          media = "disk\n";       break;
+       case ide_cdrom:         media = "cdrom\n";      break;
+       case ide_tape:          media = "tape\n";       break;
+       case ide_floppy:        media = "floppy\n";     break;
+       case ide_optical:       media = "optical\n";    break;
+       default:                media = "UNKNOWN\n";    break;
        }
-       strcpy(page,media);
+       strcpy(page, media);
        len = strlen(media);
-       PROC_IDE_READ_RETURN(page,start,off,count,eof,len);
+       PROC_IDE_READ_RETURN(page, start, off, count, eof, len);
 }
 
 static ide_proc_entry_t generic_drive_entries[] = {
-       { "driver",     S_IFREG|S_IRUGO,        proc_ide_read_driver,   proc_ide_write_driver },
-       { "identify",   S_IFREG|S_IRUSR,        proc_ide_read_identify, NULL },
-       { "media",      S_IFREG|S_IRUGO,        proc_ide_read_media,    NULL },
-       { "model",      S_IFREG|S_IRUGO,        proc_ide_read_dmodel,   NULL },
-       { "settings",   S_IFREG|S_IRUSR|S_IWUSR,proc_ide_read_settings, proc_ide_write_settings },
+       { "driver",     S_IFREG|S_IRUGO,         proc_ide_read_driver,
+                                                proc_ide_write_driver },
+       { "identify",   S_IFREG|S_IRUSR,         proc_ide_read_identify, NULL },
+       { "media",      S_IFREG|S_IRUGO,         proc_ide_read_media,    NULL },
+       { "model",      S_IFREG|S_IRUGO,         proc_ide_read_dmodel,   NULL },
+       { "settings",   S_IFREG|S_IRUSR|S_IWUSR, proc_ide_read_settings,
+                                                proc_ide_write_settings },
        { NULL, 0, NULL, NULL }
 };
 
@@ -737,7 +731,6 @@ void ide_proc_unregister_driver(ide_drive_t *drive, ide_driver_t *driver)
        spin_unlock_irqrestore(&ide_lock, flags);
        mutex_unlock(&ide_setting_mtx);
 }
-
 EXPORT_SYMBOL(ide_proc_unregister_driver);
 
 void ide_proc_port_register_devices(ide_hwif_t *hwif)
@@ -758,33 +751,22 @@ void ide_proc_port_register_devices(ide_hwif_t *hwif)
                drive->proc = proc_mkdir(drive->name, parent);
                if (drive->proc)
                        ide_add_proc_entries(drive->proc, generic_drive_entries, drive);
-               sprintf(name,"ide%d/%s", (drive->name[2]-'a')/2, drive->name);
+               sprintf(name, "ide%d/%s", (drive->name[2]-'a')/2, drive->name);
                ent = proc_symlink(drive->name, proc_ide_root, name);
                if (!ent) return;
        }
 }
 
-static void destroy_proc_ide_device(ide_hwif_t *hwif, ide_drive_t *drive)
+void ide_proc_unregister_device(ide_drive_t *drive)
 {
        if (drive->proc) {
                ide_remove_proc_entries(drive->proc, generic_drive_entries);
                remove_proc_entry(drive->name, proc_ide_root);
-               remove_proc_entry(drive->name, hwif->proc);
+               remove_proc_entry(drive->name, drive->hwif->proc);
                drive->proc = NULL;
        }
 }
 
-static void destroy_proc_ide_drives(ide_hwif_t *hwif)
-{
-       int     d;
-
-       for (d = 0; d < MAX_DRIVES; d++) {
-               ide_drive_t *drive = &hwif->drives[d];
-               if (drive->proc)
-                       destroy_proc_ide_device(hwif, drive);
-       }
-}
-
 static ide_proc_entry_t hwif_entries[] = {
        { "channel",    S_IFREG|S_IRUGO,        proc_ide_read_channel,  NULL },
        { "mate",       S_IFREG|S_IRUGO,        proc_ide_read_mate,     NULL },
@@ -804,19 +786,9 @@ void ide_proc_register_port(ide_hwif_t *hwif)
        }
 }
 
-#ifdef CONFIG_BLK_DEV_IDEPCI
-void ide_pci_create_host_proc(const char *name, get_info_t *get_info)
-{
-       create_proc_info_entry(name, 0, proc_ide_root, get_info);
-}
-
-EXPORT_SYMBOL_GPL(ide_pci_create_host_proc);
-#endif
-
 void ide_proc_unregister_port(ide_hwif_t *hwif)
 {
        if (hwif->proc) {
-               destroy_proc_ide_drives(hwif);
                ide_remove_proc_entries(hwif->proc, hwif_entries);
                remove_proc_entry(hwif->name, proc_ide_root);
                hwif->proc = NULL;
@@ -840,7 +812,7 @@ static int ide_drivers_show(struct seq_file *s, void *p)
        err = bus_for_each_drv(&ide_bus_type, NULL, s, proc_print_driver);
        if (err < 0)
                printk(KERN_WARNING "IDE: %s: bus_for_each_drv error: %d\n",
-                       __FUNCTION__, err);
+                       __func__, err);
        return 0;
 }
 
@@ -850,6 +822,7 @@ static int ide_drivers_open(struct inode *inode, struct file *file)
 }
 
 static const struct file_operations ide_drivers_operations = {
+       .owner          = THIS_MODULE,
        .open           = ide_drivers_open,
        .read           = seq_read,
        .llseek         = seq_lseek,
@@ -858,16 +831,12 @@ static const struct file_operations ide_drivers_operations = {
 
 void proc_ide_create(void)
 {
-       struct proc_dir_entry *entry;
-
        proc_ide_root = proc_mkdir("ide", NULL);
 
        if (!proc_ide_root)
                return;
 
-       entry = create_proc_entry("drivers", 0, proc_ide_root);
-       if (entry)
-               entry->proc_fops = &ide_drivers_operations;
+       proc_create("drivers", 0, proc_ide_root, &ide_drivers_operations);
 }
 
 void proc_ide_destroy(void)