diff --git a/audio/audio_hw.c b/audio/audio_hw.c
index ff45acb..9a8330f 100644
--- a/audio/audio_hw.c
+++ b/audio/audio_hw.c
@@ -59,7 +59,6 @@
 #define MIN_WRITE_SLEEP_US 2000
 #define MAX_WRITE_SLEEP_US ((OUT_PERIOD_SIZE * OUT_SHORT_PERIOD_COUNT * 1000000) \
                                 / OUT_SAMPLING_RATE)
-#define MAX_SLEEP_LIMIT 100
 
 enum {
     OUT_BUFFER_TYPE_UNKNOWN,
@@ -124,7 +123,6 @@
     int write_threshold;
     int cur_write_threshold;
     int buffer_type;
-    int sleep_limit_count;
 
     struct audio_device *dev;
 };
@@ -266,10 +264,6 @@
         device = PCM_DEVICE;
         out->pcm_config = &pcm_config_out;
         out->buffer_type = OUT_BUFFER_TYPE_UNKNOWN;
-        //FIXME: debug log for start failure issue
-        ALOGE_IF(out->pcm_config->start_threshold != OUT_PERIOD_SIZE * OUT_SHORT_PERIOD_COUNT,
-                 "start_output_stream(): corrupted start_threshold %d",
-                 out->pcm_config->start_threshold);
     }
 
     /*
@@ -314,8 +308,6 @@
         out->buffer = malloc(pcm_frames_to_bytes(out->pcm, out->buffer_frames));
     }
 
-    out->sleep_limit_count = 0;
-
     adev->active_out = out;
 
     return 0;
@@ -618,7 +610,7 @@
     size_t in_frames = bytes / frame_size;
     size_t out_frames;
     int buffer_type;
-    unsigned int kernel_frames;
+    int kernel_frames;
     bool sco_on;
 
     /*
@@ -692,17 +684,12 @@
         do {
             struct timespec time_stamp;
             if (pcm_get_htimestamp(out->pcm,
-                                   &kernel_frames,
+                                   (unsigned int *)&kernel_frames,
                                    &time_stamp) < 0)
                 break;
-
-            if (kernel_frames > pcm_get_buffer_size(out->pcm)) {
-                ALOGW("out_write() invalid kernel frame count: %d", kernel_frames);
-                break;
-            }
             kernel_frames = pcm_get_buffer_size(out->pcm) - kernel_frames;
 
-            if ((int)kernel_frames > out->cur_write_threshold) {
+            if (kernel_frames > out->cur_write_threshold) {
                 int sleep_time_us =
                     (int)(((int64_t)(kernel_frames - out->cur_write_threshold)
                                     * 1000000) / out->pcm_config->rate);
@@ -710,25 +697,15 @@
                     break;
                 total_sleep_time_us += sleep_time_us;
                 if (total_sleep_time_us > MAX_WRITE_SLEEP_US) {
-                    ALOGW_IF(out->sleep_limit_count == 0,
-                             "out_write() limiting total sleep time %d to %d, cur sleep time us %d",
-                          total_sleep_time_us, MAX_WRITE_SLEEP_US,
-                          sleep_time_us);
+                    ALOGW("out_write() limiting sleep time %d to %d",
+                          total_sleep_time_us, MAX_WRITE_SLEEP_US);
                     sleep_time_us = MAX_WRITE_SLEEP_US -
                                         (total_sleep_time_us - sleep_time_us);
-                    LOG_ALWAYS_FATAL_IF(out->sleep_limit_count++ >= MAX_SLEEP_LIMIT,
-                                        "out_write() limit sleep max count exceeded, "
-                                        "kernel frames %d, cur_write_threshold %d, "
-                                        "total_sleep_time_us %d, sleep_time_us %d",
-                                        kernel_frames, out->cur_write_threshold,
-                                        total_sleep_time_us, sleep_time_us);
-                } else {
-                    out->sleep_limit_count = 0;
                 }
                 usleep(sleep_time_us);
             }
 
-        } while (((int)kernel_frames > out->cur_write_threshold) &&
+        } while ((kernel_frames > out->cur_write_threshold) &&
                 (total_sleep_time_us <= MAX_WRITE_SLEEP_US));
 
         /* do not allow abrupt changes on buffer size. Increasing/decreasing
@@ -748,8 +725,8 @@
             if (out->cur_write_threshold > out->write_threshold) {
                 out->cur_write_threshold = out->write_threshold;
             }
-        } else if (((int)kernel_frames < out->write_threshold) &&
-            ((out->write_threshold - (int)kernel_frames) >
+        } else if ((kernel_frames < out->write_threshold) &&
+            ((out->write_threshold - kernel_frames) >
                 (int)(period_size * OUT_SHORT_PERIOD_COUNT))) {
             out->cur_write_threshold = (kernel_frames / period_size + 1) * period_size;
             out->cur_write_threshold += period_size / 4;
@@ -760,7 +737,6 @@
     if (ret == -EPIPE) {
         /* In case of underrun, don't sleep since we want to catch up asap */
         pthread_mutex_unlock(&out->lock);
-        ALOGE("out_write() error EPIPE");
         return ret;
     }
 
@@ -768,7 +744,6 @@
     pthread_mutex_unlock(&out->lock);
 
     if (ret != 0) {
-        ALOGE("out_write() error %s", pcm_get_error(out->pcm));
         usleep(bytes * 1000000 / audio_stream_frame_size(&stream->common) /
                out_get_sample_rate(&stream->common));
     }
