struct link_mst_stream_allocation stream_allocations[MAX_CONTROLLER_NUM];
 };
 
-struct time_stamp {
-       uint64_t edp_poweroff;
-       uint64_t edp_poweron;
-};
-
-struct link_trace {
-       struct time_stamp time_stamp;
+struct edp_trace_power_timestamps {
+       uint64_t poweroff;
+       uint64_t poweron;
 };
 
 struct dp_trace_lt_counts {
        struct dp_trace_lt commit_lt_trace;
        unsigned int link_loss_count;
        bool is_initialized;
+       struct edp_trace_power_timestamps edp_trace_power_timestamps;
 };
 
 /* PSR feature flags */
        struct dc_link_status link_status;
        struct dprx_states dprx_states;
 
-       struct link_trace link_trace;
        struct gpio *hpd_gpio;
        enum dc_link_fec_state fec_state;
 };
 
 
 #include "dcn10/dcn10_hw_sequencer.h"
 
+#include "link/link_dp_trace.h"
 #include "dce110_hw_sequencer.h"
 
 #define GAMMA_HW_POINTS_NUM 256
                                div64_u64(dm_get_elapse_time_in_ns(
                                                ctx,
                                                current_ts,
-                                               link->link_trace.time_stamp.edp_poweroff), 1000000);
+                                               dp_trace_get_edp_poweroff_timestamp(link)), 1000000);
                unsigned long long time_since_edp_poweron_ms =
                                div64_u64(dm_get_elapse_time_in_ns(
                                                ctx,
                                                current_ts,
-                                               link->link_trace.time_stamp.edp_poweron), 1000000);
+                                               dp_trace_get_edp_poweron_timestamp(link)), 1000000);
                DC_LOG_HW_RESUME_S3(
                                "%s: transition: power_up=%d current_ts=%llu edp_poweroff=%llu edp_poweron=%llu time_since_edp_poweroff_ms=%llu time_since_edp_poweron_ms=%llu",
                                __func__,
                                power_up,
                                current_ts,
-                               link->link_trace.time_stamp.edp_poweroff,
-                               link->link_trace.time_stamp.edp_poweron,
+                               dp_trace_get_edp_poweroff_timestamp(link),
+                               dp_trace_get_edp_poweron_timestamp(link),
                                time_since_edp_poweroff_ms,
                                time_since_edp_poweron_ms);
 
                                        link->local_sink->edid_caps.panel_patch.extra_t12_ms;
 
                        /* Adjust remaining_min_edp_poweroff_time_ms if this is not the first time. */
-                       if (link->link_trace.time_stamp.edp_poweroff != 0) {
+                       if (dp_trace_get_edp_poweroff_timestamp(link) != 0) {
                                if (time_since_edp_poweroff_ms < remaining_min_edp_poweroff_time_ms)
                                        remaining_min_edp_poweroff_time_ms =
                                                remaining_min_edp_poweroff_time_ms - time_since_edp_poweroff_ms;
                                __func__, (power_up ? "On":"Off"),
                                bp_result);
 
-               if (!power_up)
-                       /*save driver power off time stamp*/
-                       link->link_trace.time_stamp.edp_poweroff = dm_get_timestamp(ctx);
-               else
-                       link->link_trace.time_stamp.edp_poweron = dm_get_timestamp(ctx);
+               dp_trace_set_edp_power_timestamp(link, power_up);
 
                DC_LOG_HW_RESUME_S3(
                                "%s: updated values: edp_poweroff=%llu edp_poweron=%llu\n",
                                __func__,
-                               link->link_trace.time_stamp.edp_poweroff,
-                               link->link_trace.time_stamp.edp_poweron);
+                               dp_trace_get_edp_poweroff_timestamp(link),
+                               dp_trace_get_edp_poweron_timestamp(link));
 
                if (bp_result != BP_RESULT_OK)
                        DC_LOG_ERROR(
                return;
 
        if (!link->panel_cntl->funcs->is_panel_powered_on(link->panel_cntl) &&
-                       link->link_trace.time_stamp.edp_poweroff != 0) {
+                       dp_trace_get_edp_poweroff_timestamp(link) != 0) {
                unsigned int t12_duration = 500; // Default T12 as per spec
                unsigned long long current_ts = dm_get_timestamp(ctx);
                unsigned long long time_since_edp_poweroff_ms =
                                div64_u64(dm_get_elapse_time_in_ns(
                                                ctx,
                                                current_ts,
-                                               link->link_trace.time_stamp.edp_poweroff), 1000000);
+                                               dp_trace_get_edp_poweroff_timestamp(link)), 1000000);
 
                t12_duration += link->local_sink->edid_caps.panel_patch.extra_t12_ms; // Add extra T12
 
 
 {
        return link->dp_trace.link_loss_count;
 }
+
+void dp_trace_set_edp_power_timestamp(struct dc_link *link,
+               bool power_up)
+{
+       if (!power_up)
+               /*save driver power off time stamp*/
+               link->dp_trace.edp_trace_power_timestamps.poweroff = dm_get_timestamp(link->dc->ctx);
+       else
+               link->dp_trace.edp_trace_power_timestamps.poweron = dm_get_timestamp(link->dc->ctx);
+}
+
+uint64_t dp_trace_get_edp_poweron_timestamp(struct dc_link *link)
+{
+       return link->dp_trace.edp_trace_power_timestamps.poweron;
+}
+
+uint64_t dp_trace_get_edp_poweroff_timestamp(struct dc_link *link)
+{
+       return link->dp_trace.edp_trace_power_timestamps.poweroff;
+}
\ No newline at end of file