From f1d6d38150dd4f447ff5d31805b9b1bd5154bc60 Mon Sep 17 00:00:00 2001
From: manfred99 <manfred99@4ea69e1a-61f1-4043-bf83-b5c94c648137>
Date: Sat, 24 Oct 2009 13:38:36 +0000
Subject: [PATCH] attributes updates: - attributes 225, 232 and 233 for Intel
 X25-E SSD - non-conflicting attributes extracted from wdidle3.exe   (thanks
 to Franc Zabkar and Dan Lukes)

git-svn-id: https://smartmontools.svn.sourceforge.net/svnroot/smartmontools/trunk@2968 4ea69e1a-61f1-4043-bf83-b5c94c648137
---
 smartmontools/CHANGELOG       |  5 +++++
 smartmontools/atacmds.cpp     | 28 +++++++++++++++++++++++++++-
 smartmontools/knowndrives.cpp |  3 ++-
 3 files changed, 34 insertions(+), 2 deletions(-)

diff --git a/smartmontools/CHANGELOG b/smartmontools/CHANGELOG
index b976b02ad..c4bef0be4 100644
--- a/smartmontools/CHANGELOG
+++ b/smartmontools/CHANGELOG
@@ -43,6 +43,11 @@ NOTES FOR FUTURE RELEASES: see TODO file.
 
 <DEVELOPERS: ADDITIONS TO THE CHANGE LOG GO JUST BELOW HERE, PLEASE>
 
+  [MS] attributes updates:
+       - attributes 225, 232 and 233 for Intel X25-E SSD
+       - non-conflicting attributes extracted from wdidle3.exe
+         (thanks to Franc Zabkar and Dan Lukes)
+
   [CF] Update Windows and ./configure info in INSTALL file.
 
   [CF] Update 'do_release' script for SVN.
diff --git a/smartmontools/atacmds.cpp b/smartmontools/atacmds.cpp
index dbb9aa0c4..f1cf9d6a9 100644
--- a/smartmontools/atacmds.cpp
+++ b/smartmontools/atacmds.cpp
@@ -179,6 +179,7 @@ const vendor_attr_arg_entry vendor_attribute_args[] = {
   {200,"writeerrorcount", 1},
   {201,"detectedtacount", 1},
   {220,"temp", 1},
+  {225,"hostwritescount", 1},
   {  0,"raw8", 253},
   {  0,"raw16", 254},
   {  0,"raw48", 255},
@@ -2184,7 +2185,15 @@ void ataPrintSmartAttribName(char * out, unsigned char id, const unsigned char *
     name="Load_Friction";
     break;
   case 225:
-    name="Load_Cycle_Count";
+    switch (val) {
+    case 1:
+      // seen in Intel X25-E SSD
+      name="Host_Writes_Count";
+      break;
+    default:
+      name="Load_Cycle_Count";
+      break;
+    }
     break;
   case 226:
     name="Load-in_Time";
@@ -2202,12 +2211,29 @@ void ataPrintSmartAttribName(char * out, unsigned char id, const unsigned char *
   case 231:
     name="Temperature_Celsius";
     break;
+  case 232:
+    // seen in Intel X25-E SSD
+    name="Available_Reserved_Space";
+    break;
+  case 233:
+    // seen in Intel X25-E SSD
+    name="Media_Wearout_Indicator";
+    break;
   case 240:
     name="Head_Flying_Hours";
     break;
+  case 241:
+    name="Total_LBAs_Written";
+    break;
+  case 242:
+    name="Total_LBAs_Read";
+    break;
   case 250:
     name="Read_Error_Retry_Rate";
     break;
+  case 254:
+    name="Free_Fall_Sensor";
+    break;
   default:
     name="Unknown_Attribute";
     break;
diff --git a/smartmontools/knowndrives.cpp b/smartmontools/knowndrives.cpp
index cc15cc749..5b3220a77 100644
--- a/smartmontools/knowndrives.cpp
+++ b/smartmontools/knowndrives.cpp
@@ -75,7 +75,8 @@ static const drive_settings builtin_knowndrives[] = {
   },
   { "Intel X25-E SSD",
     "SSDSA2SH(032|064)G1.* INTEL",
-    "", "", ""
+    "", "",
+    "-v 225,hostwritescount"
   },
   { "Transcend Solid-State Drive",
     "TS(8|16|32|64|128)GSSD25-(M|S)",
-- 
GitLab