diff --git a/drivers/sensorhub/stm/ssp_data.c b/drivers/sensorhub/stm/ssp_data.c
index 428c815cd193a79d40a524ebb0b778b386a15519..2410a4f0a467d0f2efdecab056819cd8d1d5d944 100644
--- a/drivers/sensorhub/stm/ssp_data.c
+++ b/drivers/sensorhub/stm/ssp_data.c
@@ -33,10 +33,14 @@ static void generate_data(struct ssp_data *data, struct sensor_value *sensorsdat
 						int iSensorData, u64 timestamp)
 {
 	u64 move_timestamp = data->lastTimestamp[iSensorData];
-	while ((move_timestamp * 10 + data->adDelayBuf[iSensorData] * 15) < (timestamp * 10)) {
-		move_timestamp += data->adDelayBuf[iSensorData];
-		sensorsdata->timestamp = move_timestamp;
-		data->report_sensor_data[iSensorData](data, sensorsdata);
+	if ((iSensorData != PROXIMITY_SENSOR) && (iSensorData != GESTURE_SENSOR)
+		&& (iSensorData != STEP_DETECTOR) && (iSensorData != SIG_MOTION_SENSOR)
+		&& (iSensorData != STEP_COUNTER) && (iSensorData != TILT_TO_WAKE)) {
+		while ((move_timestamp * 10 + data->adDelayBuf[iSensorData] * 15) < (timestamp * 10)) {
+			move_timestamp += data->adDelayBuf[iSensorData];
+			sensorsdata->timestamp = move_timestamp;
+			data->report_sensor_data[iSensorData](data, sensorsdata);
+		}
 	}
 }