Implement timing, this time in microseconds.
diff --git a/rmi4update/rmi4update.cpp b/rmi4update/rmi4update.cpp
index f2818ad..33f03a9 100644
--- a/rmi4update/rmi4update.cpp
+++ b/rmi4update/rmi4update.cpp
@@ -61,7 +61,7 @@
 {
 	struct timespec start;
 	struct timespec end;
-	long long int duration_ns = 0;
+	long long int duration_us = 0;
 	int rc;
 	const unsigned char eraseAll = RMI_F34_ERASE_ALL;
 
@@ -109,10 +109,8 @@
 				return rc;
 			}
 			clock_gettime(CLOCK_MONOTONIC, &end);
-#if 0 // TODO: convert to userspace
-			duration_ns = timespec_to_ns(&end) - timespec_to_ns(&start);
-#endif
-			fprintf(stdout, "Done writing lockdown, time: %lld ns.\n", duration_ns);
+			duration_us = diff_time(&start, &end);
+			fprintf(stdout, "Done writing lockdown, time: %lld us.\n", duration_us);
 		}
 
 		rc = EnterFlashProgramming();
@@ -143,10 +141,8 @@
 		return rc;
 	}
 	clock_gettime(CLOCK_MONOTONIC, &end);
-#if 0 // TODO: convert to userspace
-	duration_ns = timespec_to_ns(&end) - timespec_to_ns(&start);
-#endif
-	fprintf(stdout, "Erase complete, time: %lld ns.\n", duration_ns);
+	duration_us = diff_time(&start, &end);
+	fprintf(stdout, "Erase complete, time: %lld us.\n", duration_us);
 
 	if (m_firmwareImage.GetFirmwareData()) {
 		fprintf(stdout, "Writing firmware...\n");
@@ -158,10 +154,8 @@
 			return rc;
 		}
 		clock_gettime(CLOCK_MONOTONIC, &end);
-#if 0 // TODO: convert to userspace
-		duration_ns = timespec_to_ns(&end) - timespec_to_ns(&start);
-#endif
-		fprintf(stdout, "Done writing FW, time: %lld ns.\n", duration_ns);
+		duration_us = diff_time(&start, &end);
+		fprintf(stdout, "Done writing FW, time: %lld us.\n", duration_us);
 	}
 
 	if (m_firmwareImage.GetConfigData()) {
@@ -174,10 +168,8 @@
 			return rc;
 		}
 		clock_gettime(CLOCK_MONOTONIC, &end);
-#if 0 // TODO: convert to userspace
-		duration_ns = timespec_to_ns(&end) - timespec_to_ns(&start);
-#endif
-		fprintf(stdout, "Done writing config, time: %lld ns.\n", duration_ns);
+		duration_us = diff_time(&start, &end);
+		fprintf(stdout, "Done writing config, time: %lld us.\n", duration_us);
 	}
 	m_device.Reset();
 
diff --git a/rmidevice/rmidevice.cpp b/rmidevice/rmidevice.cpp
index 93fe043..d955e81 100644
--- a/rmidevice/rmidevice.cpp
+++ b/rmidevice/rmidevice.cpp
@@ -258,4 +258,12 @@
 	}
 
 	return 0;
+}
+
+long long diff_time(struct timespec *start, struct timespec *end)
+{
+	long long diff;
+	diff = (end->tv_sec - start->tv_sec) * 1000 * 1000;
+	diff += (end->tv_nsec - start->tv_nsec) / 1000;
+	return diff;
 }
\ No newline at end of file
diff --git a/rmidevice/rmidevice.h b/rmidevice/rmidevice.h
index ca97b48..de17212 100644
--- a/rmidevice/rmidevice.h
+++ b/rmidevice/rmidevice.h
@@ -63,4 +63,6 @@
 	int m_bytesPerReadRequest;
  };
 
+long long diff_time(struct timespec *start, struct timespec *end);
+
 #endif /* _RMIDEVICE_H_ */
\ No newline at end of file