{
        struct core_freesync *core_freesync = NULL;
        unsigned int cur_timestamp_in_us;
+       unsigned long long cur_tick;
 
        if ((mod_freesync == NULL) || (stream == NULL) || (in_out_vrr == NULL))
                return;
        if (in_out_vrr->supported == false)
                return;
 
-       cur_timestamp_in_us = div_u64(dm_get_timestamp(core_freesync->dc->ctx), 10);
+       cur_tick = dm_get_timestamp(core_freesync->dc->ctx);
+       cur_timestamp_in_us = (unsigned int)
+                       div_u64(dm_get_elapse_time_in_ns(core_freesync->dc->ctx, cur_tick, 0), 1000);
 
        in_out_vrr->flip_interval.vsyncs_between_flip++;
        in_out_vrr->flip_interval.v_update_timestamp_in_us = cur_timestamp_in_us;