/* Pipes without underlay after */
        for (i = 0; i < pipe_count; i++) {
+               unsigned int pixel_clock_khz;
                if (!pipe[i].stream || pipe[i].bottom_pipe)
                        continue;
 
                data->lpt_en[num_displays + 4] = false;
                data->h_total[num_displays + 4] = bw_int_to_fixed(pipe[i].stream->timing.h_total);
                data->v_total[num_displays + 4] = bw_int_to_fixed(pipe[i].stream->timing.v_total);
-               data->pixel_rate[num_displays + 4] = bw_frc_to_fixed(pipe[i].stream->timing.pix_clk_khz, 1000);
+               pixel_clock_khz = pipe[i].stream->timing.pix_clk_khz;
+               if (pipe[i].stream->timing.timing_3d_format == TIMING_3D_FORMAT_HW_FRAME_PACKING)
+                       pixel_clock_khz *= 2;
+               data->pixel_rate[num_displays + 4] = bw_frc_to_fixed(pixel_clock_khz, 1000);
                if (pipe[i].plane_state) {
                        data->src_width[num_displays + 4] = bw_int_to_fixed(pipe[i].plane_res.scl_data.viewport.width);
                        data->pitch_in_pixels[num_displays + 4] = data->src_width[num_displays + 4];
 
                v->v_sync_plus_back_porch[input_idx] = pipe->stream->timing.v_total
                                - v->vactive[input_idx]
                                - pipe->stream->timing.v_front_porch;
-               v->pixel_clock[input_idx] = pipe->stream->timing.pix_clk_khz / 1000.0f;
-
+               v->pixel_clock[input_idx] = pipe->stream->timing.pix_clk_khz/1000.0;
+               if (pipe->stream->timing.timing_3d_format == TIMING_3D_FORMAT_HW_FRAME_PACKING)
+                       v->pixel_clock[input_idx] *= 2;
                if (!pipe->plane_state) {
                        v->dcc_enable[input_idx] = dcn_bw_yes;
                        v->source_pixel_format[input_idx] = dcn_bw_rgb_sub_32;
 
                        || !dc_is_dp_signal(stream2->signal)))
                return false;
 
+       if (stream1->view_format != stream2->view_format)
+               return false;
+
        return true;
 }
 static bool is_dp_and_hdmi_sharable(
                return false;
 
        if (stream1->clamping.c_depth != COLOR_DEPTH_888 ||
-           stream2->clamping.c_depth != COLOR_DEPTH_888)
+               stream2->clamping.c_depth != COLOR_DEPTH_888)
                return false;
 
        return true;
 
        if (stream->timing.pixel_encoding == PIXEL_ENCODING_YCBCR420) {
                pixel_clk_params->requested_pix_clk  = pixel_clk_params->requested_pix_clk / 2;
        }
+       if (stream->timing.timing_3d_format == TIMING_3D_FORMAT_HW_FRAME_PACKING)
+               pixel_clk_params->requested_pix_clk *= 2;
+
 }
 
 void dce110_resource_build_pipe_hw_param(struct pipe_ctx *pipe_ctx)
 
 
        if (stream->timing.pixel_encoding == PIXEL_ENCODING_YCBCR420)
                pixel_clk_params->requested_pix_clk  /= 2;
+       if (stream->timing.timing_3d_format == TIMING_3D_FORMAT_HW_FRAME_PACKING)
+               pixel_clk_params->requested_pix_clk *= 2;
 
 }