diff --git a/sm5/CHANGELOG b/sm5/CHANGELOG
index 0460d7c8f67fd4661a0ca0f96cedebb69b6a2133..3b2231b889d8cdf5fb74e55b2ef5df5d7d9c75ac 100644
--- a/sm5/CHANGELOG
+++ b/sm5/CHANGELOG
@@ -1,6 +1,6 @@
 CHANGELOG for smartmontools
 
-$Id: CHANGELOG,v 1.730 2008/09/12 18:46:38 chrfranke Exp $
+$Id: CHANGELOG,v 1.731 2008/09/12 19:26:09 chrfranke Exp $
 
 The most recent version of this file is:
 http://smartmontools.cvs.sourceforge.net/smartmontools/sm5/CHANGELOG?view=markup
@@ -39,6 +39,8 @@ NOTES FOR FUTURE RELEASES: see TODO file.
 
 <DEVELOPERS: ADDITIONS TO THE CHANGE LOG GO JUST BELOW HERE, PLEASE>
 
+  [CF] Remove casts from 'format_ata_string()' calls.
+
   [CF] Minor changes to fix errors and warnings from Cygwin gcc 4.3.0.
 
   [CF] smartd: Remove SCSITIMEOUT code. According to smartd.h 1.54 CVS log
diff --git a/sm5/atacmds.h b/sm5/atacmds.h
index 77f722f5bc68b7a3d4fa434baaa3f6c55432a87a..e662f4a5e918b37f4c9978e5c33d16c7c2164ed3 100644
--- a/sm5/atacmds.h
+++ b/sm5/atacmds.h
@@ -25,7 +25,7 @@
 #ifndef ATACMDS_H_
 #define ATACMDS_H_
 
-#define ATACMDS_H_CVSID "$Id: atacmds.h,v 1.100 2008/09/06 20:08:35 chrfranke Exp $\n"
+#define ATACMDS_H_CVSID "$Id: atacmds.h,v 1.101 2008/09/12 19:26:09 chrfranke Exp $\n"
 
 #include "dev_interface.h" // ata_device
 
@@ -649,6 +649,8 @@ int ataPrintSmartSelfTestlog(const ata_smart_selftestlog * data, bool allentries
 
 // Convenience function for formatting strings from ata_identify_device.
 void format_ata_string(char * out, const char * in, int n);
+inline void format_ata_string(char * out, const unsigned char * in, int n)
+  { format_ata_string(out, (const char *)in, n); }
 
 // Utility routines.
 unsigned char checksum(const unsigned char * buffer);
diff --git a/sm5/ataprint.cpp b/sm5/ataprint.cpp
index 997146b2356b7f432dcce6215cab0931ffc50e2e..16314c7efa3d957635268a6fcce4cd987a65fce8 100644
--- a/sm5/ataprint.cpp
+++ b/sm5/ataprint.cpp
@@ -43,7 +43,7 @@
 #include "utility.h"
 #include "knowndrives.h"
 
-const char *ataprint_c_cvsid="$Id: ataprint.cpp,v 1.199 2008/09/12 18:46:38 chrfranke Exp $"
+const char *ataprint_c_cvsid="$Id: ataprint.cpp,v 1.200 2008/09/12 19:26:09 chrfranke Exp $"
 ATACMDNAMES_H_CVSID ATACMDS_H_CVSID ATAPRINT_H_CVSID CONFIG_H_CVSID EXTERN_H_CVSID INT64_H_CVSID KNOWNDRIVES_H_CVSID SMARTCTL_H_CVSID UTILITY_H_CVSID;
 
 // for passing global control variables
@@ -460,9 +460,9 @@ static int ataPrintDriveInfo (const ata_identify_device * drive)
   char model[64], serial[64], firm[64], capacity[64];
 
   // format drive information (with byte swapping as needed)
-  format_ata_string(model, (char *)drive->model,40);
-  format_ata_string(serial, (char *)drive->serial_no,20);
-  format_ata_string(firm, (char *)drive->fw_rev,8);
+  format_ata_string(model, drive->model, 40);
+  format_ata_string(serial, drive->serial_no, 20);
+  format_ata_string(firm, drive->fw_rev, 8);
 
   // print out model, serial # and firmware versions  (byte-swap ASCI strings)
   drivetype=lookupdrive(model, firm);
diff --git a/sm5/knowndrives.cpp b/sm5/knowndrives.cpp
index 20737fbb3b93ef8c07b1f83d17d351e5f02bd2da..b661a77f47c881484c6c08bc99c6522fb0209706 100644
--- a/sm5/knowndrives.cpp
+++ b/sm5/knowndrives.cpp
@@ -25,7 +25,7 @@
 #include "knowndrives.h"
 #include "utility.h"
 
-const char *knowndrives_c_cvsid="$Id: knowndrives.cpp,v 1.174 2008/09/06 20:08:35 chrfranke Exp $"
+const char *knowndrives_c_cvsid="$Id: knowndrives.cpp,v 1.175 2008/09/12 19:26:09 chrfranke Exp $"
 ATACMDS_H_CVSID CONFIG_H_CVSID EXTERN_H_CVSID INT64_H_CVSID KNOWNDRIVES_H_CVSID UTILITY_H_CVSID;
 
 #define MODEL_STRING_LENGTH                         40
@@ -1555,8 +1555,8 @@ void showpresets(const struct ata_identify_device *drive){
   char model[MODEL_STRING_LENGTH+1], firmware[FIRMWARE_STRING_LENGTH+1];
 
   // get the drive's model/firmware strings
-  format_ata_string(model, (char *)drive->model, MODEL_STRING_LENGTH);
-  format_ata_string(firmware, (char *)drive->fw_rev, FIRMWARE_STRING_LENGTH);
+  format_ata_string(model, drive->model, MODEL_STRING_LENGTH);
+  format_ata_string(firmware, drive->fw_rev, FIRMWARE_STRING_LENGTH);
   
   // and search to see if they match values in the table
   if ((i = lookupdrive(model, firmware)) < 0) {
@@ -1590,8 +1590,8 @@ int applypresets(const ata_identify_device *drive, unsigned char * opts,
   char model[MODEL_STRING_LENGTH+1], firmware[FIRMWARE_STRING_LENGTH+1];
 
   // get the drive's model/firmware strings
-  format_ata_string(model, (char *)drive->model, MODEL_STRING_LENGTH);
-  format_ata_string(firmware, (char *)drive->fw_rev, FIRMWARE_STRING_LENGTH);
+  format_ata_string(model, drive->model, MODEL_STRING_LENGTH);
+  format_ata_string(firmware, drive->fw_rev, FIRMWARE_STRING_LENGTH);
   
   // Look up the drive in knowndrives[].
   int i;
diff --git a/sm5/scsiata.cpp b/sm5/scsiata.cpp
index a6c6bb739c38d232c11e5072ac58d0ff86b3a074..bff27d946b622a6caf88d43de2f212b5da049cca 100644
--- a/sm5/scsiata.cpp
+++ b/sm5/scsiata.cpp
@@ -50,7 +50,7 @@
 #include "dev_ata_cmd_set.h" // ata_device_with_command_set
 #include "dev_tunnelled.h" // tunnelled_device<>
 
-const char *scsiata_c_cvsid="$Id: scsiata.cpp,v 1.17 2008/09/06 20:08:35 chrfranke Exp $"
+const char *scsiata_c_cvsid="$Id: scsiata.cpp,v 1.18 2008/09/12 19:26:09 chrfranke Exp $"
 CONFIG_H_CVSID EXTERN_H_CVSID INT64_H_CVSID SCSICMDS_H_CVSID SCSIATA_H_CVSID UTILITY_H_CVSID;
 
 /* for passing global control variables */
@@ -761,7 +761,7 @@ static int has_usbcypress_pass_through(ata_device * atadev, const char *manufact
         return 0;
 
     /* check if model string match, revision doesn't work for me */
-    format_ata_string(model, (char *)drive.model,40);
+    format_ata_string(model, drive.model, 40);
     if (*model == 0 || isprint_string(model) == 0)
         return 0;
 
@@ -772,10 +772,10 @@ static int has_usbcypress_pass_through(ata_device * atadev, const char *manufact
         pout("product doesn't match in pass_through test\n");
 
     /* check serial */
-    format_ata_string(serial, (char *)drive.serial_no,20);
+    format_ata_string(serial, drive.serial_no, 20);
     if (isprint_string(serial) == 0)
         return 0;
-    format_ata_string(firm, (char *)drive.fw_rev,8);
+    format_ata_string(firm, drive.fw_rev, 8);
     if (isprint_string(firm) == 0)
         return 0;
     return 1;