Merge head 'upstream' of master.kernel.org:/pub/scm/linux/kernel/git/jgarzik/libata-dev
[pandora-kernel.git] / drivers / scsi / aic7xxx / aic7xxx_proc.c
index 5fece85..3802c91 100644 (file)
@@ -50,7 +50,7 @@ static void   ahc_dump_target_state(struct ahc_softc *ahc,
                                      u_int our_id, char channel,
                                      u_int target_id, u_int target_offset);
 static void    ahc_dump_device_state(struct info_str *info,
-                                     struct ahc_linux_device *dev);
+                                     struct scsi_device *dev);
 static int     ahc_proc_write_seeprom(struct ahc_softc *ahc,
                                       char *buffer, int length);
 
@@ -142,6 +142,7 @@ ahc_dump_target_state(struct ahc_softc *ahc, struct info_str *info,
                      u_int target_offset)
 {
        struct  ahc_linux_target *targ;
+       struct  scsi_target *starget;
        struct  ahc_initiator_tinfo *tinfo;
        struct  ahc_tmode_tstate *tstate;
        int     lun;
@@ -153,9 +154,10 @@ ahc_dump_target_state(struct ahc_softc *ahc, struct info_str *info,
        copy_info(info, "Target %d Negotiation Settings\n", target_id);
        copy_info(info, "\tUser: ");
        ahc_format_transinfo(info, &tinfo->user);
-       targ = ahc->platform_data->targets[target_offset];
-       if (targ == NULL)
+       starget = ahc->platform_data->starget[target_offset];
+       if (!starget)
                return;
+       targ = scsi_transport_target_data(starget);
 
        copy_info(info, "\tGoal: ");
        ahc_format_transinfo(info, &tinfo->goal);
@@ -163,22 +165,25 @@ ahc_dump_target_state(struct ahc_softc *ahc, struct info_str *info,
        ahc_format_transinfo(info, &tinfo->curr);
 
        for (lun = 0; lun < AHC_NUM_LUNS; lun++) {
-               struct ahc_linux_device *dev;
+               struct scsi_device *sdev;
 
-               dev = targ->devices[lun];
+               sdev = targ->sdev[lun];
 
-               if (dev == NULL)
+               if (sdev == NULL)
                        continue;
 
-               ahc_dump_device_state(info, dev);
+               ahc_dump_device_state(info, sdev);
        }
 }
 
 static void
-ahc_dump_device_state(struct info_str *info, struct ahc_linux_device *dev)
+ahc_dump_device_state(struct info_str *info, struct scsi_device *sdev)
 {
+       struct ahc_linux_device *dev = scsi_transport_device_data(sdev);
+
        copy_info(info, "\tChannel %c Target %d Lun %d Settings\n",
-                 dev->target->channel + 'A', dev->target->target, dev->lun);
+                 sdev->sdev_target->channel + 'A',
+                 sdev->sdev_target->id, sdev->lun);
 
        copy_info(info, "\t\tCommands Queued %ld\n", dev->commands_issued);
        copy_info(info, "\t\tCommands Active %d\n", dev->active);
@@ -292,20 +297,13 @@ int
 ahc_linux_proc_info(struct Scsi_Host *shost, char *buffer, char **start,
                    off_t offset, int length, int inout)
 {
-       struct  ahc_softc *ahc;
+       struct  ahc_softc *ahc = *(struct ahc_softc **)shost->hostdata;
        struct  info_str info;
        char    ahc_info[256];
-       u_long  s;
        u_int   max_targ;
        u_int   i;
        int     retval;
 
-       retval = -EINVAL;
-       ahc_list_lock(&s);
-       ahc = ahc_find_softc(*(struct ahc_softc **)shost->hostdata);
-       if (ahc == NULL)
-               goto done;
-
         /* Has data been written to the file? */ 
        if (inout == TRUE) {
                retval = ahc_proc_write_seeprom(ahc, buffer, length);
@@ -367,6 +365,5 @@ ahc_linux_proc_info(struct Scsi_Host *shost, char *buffer, char **start,
        }
        retval = info.pos > info.offset ? info.pos - info.offset : 0;
 done:
-       ahc_list_unlock(&s);
        return (retval);
 }