rk fb: from rk3368 fb only need to reserved 1 framebuffer
[firefly-linux-kernel-4.4.55.git] / drivers / scsi / BusLogic.c
index d7ca247efa35b3125fa2f3d0e67b967a600c4d15..344d87599cd2a88734fc2a620518c8a5ff41cb29 100644 (file)
@@ -3201,26 +3201,30 @@ static int BusLogic_BIOSDiskParameters(struct scsi_device *sdev, struct block_de
   BugLogic_ProcDirectoryInfo implements /proc/scsi/BusLogic/<N>.
 */
 
-static int BusLogic_ProcDirectoryInfo(struct Scsi_Host *shost, char *ProcBuffer, char **StartPointer, off_t Offset, int BytesAvailable, int WriteFlag)
+static int BusLogic_write_info(struct Scsi_Host *shost, char *ProcBuffer, int BytesAvailable)
 {
        struct BusLogic_HostAdapter *HostAdapter = (struct BusLogic_HostAdapter *) shost->hostdata;
        struct BusLogic_TargetStatistics *TargetStatistics;
-       int TargetID, Length;
-       char *Buffer;
 
        TargetStatistics = HostAdapter->TargetStatistics;
-       if (WriteFlag) {
-               HostAdapter->ExternalHostAdapterResets = 0;
-               HostAdapter->HostAdapterInternalErrors = 0;
-               memset(TargetStatistics, 0, BusLogic_MaxTargetDevices * sizeof(struct BusLogic_TargetStatistics));
-               return 0;
-       }
-       Buffer = HostAdapter->MessageBuffer;
-       Length = HostAdapter->MessageBufferLength;
-       Length += sprintf(&Buffer[Length], "\n\
+       HostAdapter->ExternalHostAdapterResets = 0;
+       HostAdapter->HostAdapterInternalErrors = 0;
+       memset(TargetStatistics, 0, BusLogic_MaxTargetDevices * sizeof(struct BusLogic_TargetStatistics));
+       return 0;
+}
+
+static int BusLogic_show_info(struct seq_file *m, struct Scsi_Host *shost)
+{
+       struct BusLogic_HostAdapter *HostAdapter = (struct BusLogic_HostAdapter *) shost->hostdata;
+       struct BusLogic_TargetStatistics *TargetStatistics;
+       int TargetID;
+
+       TargetStatistics = HostAdapter->TargetStatistics;
+       seq_write(m, HostAdapter->MessageBuffer, HostAdapter->MessageBufferLength);
+       seq_printf(m, "\n\
 Current Driver Queue Depth:    %d\n\
 Currently Allocated CCBs:      %d\n", HostAdapter->DriverQueueDepth, HostAdapter->AllocatedCCBs);
-       Length += sprintf(&Buffer[Length], "\n\n\
+       seq_printf(m, "\n\n\
                           DATA TRANSFER STATISTICS\n\
 \n\
 Target Tagged Queuing  Queue Depth  Active  Attempted  Completed\n\
@@ -3229,66 +3233,62 @@ Target  Tagged Queuing  Queue Depth  Active  Attempted  Completed\n\
                struct BusLogic_TargetFlags *TargetFlags = &HostAdapter->TargetFlags[TargetID];
                if (!TargetFlags->TargetExists)
                        continue;
-               Length += sprintf(&Buffer[Length], "  %2d       %s", TargetID, (TargetFlags->TaggedQueuingSupported ? (TargetFlags->TaggedQueuingActive ? "    Active" : (HostAdapter->TaggedQueuingPermitted & (1 << TargetID)
+               seq_printf(m, "  %2d    %s", TargetID, (TargetFlags->TaggedQueuingSupported ? (TargetFlags->TaggedQueuingActive ? "    Active" : (HostAdapter->TaggedQueuingPermitted & (1 << TargetID)
                                                                                                                                                                    ? "  Permitted" : "   Disabled"))
                                                                          : "Not Supported"));
-               Length += sprintf(&Buffer[Length],
+               seq_printf(m,
                                  "         %3d       %3u    %9u        %9u\n", HostAdapter->QueueDepth[TargetID], HostAdapter->ActiveCommands[TargetID], TargetStatistics[TargetID].CommandsAttempted, TargetStatistics[TargetID].CommandsCompleted);
        }
-       Length += sprintf(&Buffer[Length], "\n\
+       seq_printf(m, "\n\
 Target  Read Commands  Write Commands   Total Bytes Read    Total Bytes Written\n\
 ======  =============  ==============  ===================  ===================\n");
        for (TargetID = 0; TargetID < HostAdapter->MaxTargetDevices; TargetID++) {
                struct BusLogic_TargetFlags *TargetFlags = &HostAdapter->TargetFlags[TargetID];
                if (!TargetFlags->TargetExists)
                        continue;
-               Length += sprintf(&Buffer[Length], "  %2d         %9u    %9u", TargetID, TargetStatistics[TargetID].ReadCommands, TargetStatistics[TargetID].WriteCommands);
+               seq_printf(m, "  %2d      %9u    %9u", TargetID, TargetStatistics[TargetID].ReadCommands, TargetStatistics[TargetID].WriteCommands);
                if (TargetStatistics[TargetID].TotalBytesRead.Billions > 0)
-                       Length += sprintf(&Buffer[Length], "     %9u%09u", TargetStatistics[TargetID].TotalBytesRead.Billions, TargetStatistics[TargetID].TotalBytesRead.Units);
+                       seq_printf(m, "     %9u%09u", TargetStatistics[TargetID].TotalBytesRead.Billions, TargetStatistics[TargetID].TotalBytesRead.Units);
                else
-                       Length += sprintf(&Buffer[Length], "            %9u", TargetStatistics[TargetID].TotalBytesRead.Units);
+                       seq_printf(m, "         %9u", TargetStatistics[TargetID].TotalBytesRead.Units);
                if (TargetStatistics[TargetID].TotalBytesWritten.Billions > 0)
-                       Length += sprintf(&Buffer[Length], "   %9u%09u\n", TargetStatistics[TargetID].TotalBytesWritten.Billions, TargetStatistics[TargetID].TotalBytesWritten.Units);
+                       seq_printf(m, "   %9u%09u\n", TargetStatistics[TargetID].TotalBytesWritten.Billions, TargetStatistics[TargetID].TotalBytesWritten.Units);
                else
-                       Length += sprintf(&Buffer[Length], "         %9u\n", TargetStatistics[TargetID].TotalBytesWritten.Units);
+                       seq_printf(m, "      %9u\n", TargetStatistics[TargetID].TotalBytesWritten.Units);
        }
-       Length += sprintf(&Buffer[Length], "\n\
+       seq_printf(m, "\n\
 Target  Command    0-1KB      1-2KB      2-4KB      4-8KB     8-16KB\n\
 ======  =======  =========  =========  =========  =========  =========\n");
        for (TargetID = 0; TargetID < HostAdapter->MaxTargetDevices; TargetID++) {
                struct BusLogic_TargetFlags *TargetFlags = &HostAdapter->TargetFlags[TargetID];
                if (!TargetFlags->TargetExists)
                        continue;
-               Length +=
-                   sprintf(&Buffer[Length],
+               seq_printf(m,
                            "  %2d       Read    %9u  %9u  %9u  %9u  %9u\n", TargetID,
                            TargetStatistics[TargetID].ReadCommandSizeBuckets[0],
                            TargetStatistics[TargetID].ReadCommandSizeBuckets[1], TargetStatistics[TargetID].ReadCommandSizeBuckets[2], TargetStatistics[TargetID].ReadCommandSizeBuckets[3], TargetStatistics[TargetID].ReadCommandSizeBuckets[4]);
-               Length +=
-                   sprintf(&Buffer[Length],
+               seq_printf(m,
                            "  %2d       Write   %9u  %9u  %9u  %9u  %9u\n", TargetID,
                            TargetStatistics[TargetID].WriteCommandSizeBuckets[0],
                            TargetStatistics[TargetID].WriteCommandSizeBuckets[1], TargetStatistics[TargetID].WriteCommandSizeBuckets[2], TargetStatistics[TargetID].WriteCommandSizeBuckets[3], TargetStatistics[TargetID].WriteCommandSizeBuckets[4]);
        }
-       Length += sprintf(&Buffer[Length], "\n\
+       seq_printf(m, "\n\
 Target  Command   16-32KB    32-64KB   64-128KB   128-256KB   256KB+\n\
 ======  =======  =========  =========  =========  =========  =========\n");
        for (TargetID = 0; TargetID < HostAdapter->MaxTargetDevices; TargetID++) {
                struct BusLogic_TargetFlags *TargetFlags = &HostAdapter->TargetFlags[TargetID];
                if (!TargetFlags->TargetExists)
                        continue;
-               Length +=
-                   sprintf(&Buffer[Length],
+               seq_printf(m,
                            "  %2d       Read    %9u  %9u  %9u  %9u  %9u\n", TargetID,
                            TargetStatistics[TargetID].ReadCommandSizeBuckets[5],
                            TargetStatistics[TargetID].ReadCommandSizeBuckets[6], TargetStatistics[TargetID].ReadCommandSizeBuckets[7], TargetStatistics[TargetID].ReadCommandSizeBuckets[8], TargetStatistics[TargetID].ReadCommandSizeBuckets[9]);
-               Length +=
-                   sprintf(&Buffer[Length],
+               seq_printf(m,
                            "  %2d       Write   %9u  %9u  %9u  %9u  %9u\n", TargetID,
                            TargetStatistics[TargetID].WriteCommandSizeBuckets[5],
                            TargetStatistics[TargetID].WriteCommandSizeBuckets[6], TargetStatistics[TargetID].WriteCommandSizeBuckets[7], TargetStatistics[TargetID].WriteCommandSizeBuckets[8], TargetStatistics[TargetID].WriteCommandSizeBuckets[9]);
        }
-       Length += sprintf(&Buffer[Length], "\n\n\
+       seq_printf(m, "\n\n\
                           ERROR RECOVERY STATISTICS\n\
 \n\
          Command Aborts      Bus Device Resets   Host Adapter Resets\n\
@@ -3299,20 +3299,12 @@ Target  Requested Completed  Requested Completed  Requested Completed\n\
                struct BusLogic_TargetFlags *TargetFlags = &HostAdapter->TargetFlags[TargetID];
                if (!TargetFlags->TargetExists)
                        continue;
-               Length += sprintf(&Buffer[Length], "\
+               seq_printf(m, "\
   %2d   %5d %5d %5d    %5d %5d %5d        %5d %5d %5d\n", TargetID, TargetStatistics[TargetID].CommandAbortsRequested, TargetStatistics[TargetID].CommandAbortsAttempted, TargetStatistics[TargetID].CommandAbortsCompleted, TargetStatistics[TargetID].BusDeviceResetsRequested, TargetStatistics[TargetID].BusDeviceResetsAttempted, TargetStatistics[TargetID].BusDeviceResetsCompleted, TargetStatistics[TargetID].HostAdapterResetsRequested, TargetStatistics[TargetID].HostAdapterResetsAttempted, TargetStatistics[TargetID].HostAdapterResetsCompleted);
        }
-       Length += sprintf(&Buffer[Length], "\nExternal Host Adapter Resets: %d\n", HostAdapter->ExternalHostAdapterResets);
-       Length += sprintf(&Buffer[Length], "Host Adapter Internal Errors: %d\n", HostAdapter->HostAdapterInternalErrors);
-       if (Length >= BusLogic_MessageBufferSize)
-               BusLogic_Error("Message Buffer length %d exceeds size %d\n", HostAdapter, Length, BusLogic_MessageBufferSize);
-       if ((Length -= Offset) <= 0)
-               return 0;
-       if (Length >= BytesAvailable)
-               Length = BytesAvailable;
-       memcpy(ProcBuffer, HostAdapter->MessageBuffer + Offset, Length);
-       *StartPointer = ProcBuffer;
-       return Length;
+       seq_printf(m, "\nExternal Host Adapter Resets: %d\n", HostAdapter->ExternalHostAdapterResets);
+       seq_printf(m, "Host Adapter Internal Errors: %d\n", HostAdapter->HostAdapterInternalErrors);
+       return 0;
 }
 
 
@@ -3566,7 +3558,8 @@ static int __init BusLogic_ParseDriverOptions(char *OptionsString)
 static struct scsi_host_template Bus_Logic_template = {
        .module = THIS_MODULE,
        .proc_name = "BusLogic",
-       .proc_info = BusLogic_ProcDirectoryInfo,
+       .write_info = BusLogic_write_info,
+       .show_info = BusLogic_show_info,
        .name = "BusLogic",
        .info = BusLogic_DriverInfo,
        .queuecommand = BusLogic_QueueCommand,