Lines Matching defs:wm
9000 * @wm: watermark calculation data
9006 static u32 dce8_dram_bandwidth(struct dce8_wm_params *wm)
9014 yclk.full = dfixed_const(wm->yclk);
9016 dram_channels.full = dfixed_const(wm->dram_channels * 4);
9029 * @wm: watermark calculation data
9035 static u32 dce8_dram_bandwidth_for_display(struct dce8_wm_params *wm)
9043 yclk.full = dfixed_const(wm->yclk);
9045 dram_channels.full = dfixed_const(wm->dram_channels * 4);
9058 * @wm: watermark calculation data
9064 static u32 dce8_data_return_bandwidth(struct dce8_wm_params *wm)
9072 sclk.full = dfixed_const(wm->sclk);
9087 * @wm: watermark calculation data
9093 static u32 dce8_dmif_request_bandwidth(struct dce8_wm_params *wm)
9101 disp_clk.full = dfixed_const(wm->disp_clk);
9118 * @wm: watermark calculation data
9124 static u32 dce8_available_bandwidth(struct dce8_wm_params *wm)
9127 u32 dram_bandwidth = dce8_dram_bandwidth(wm);
9128 u32 data_return_bandwidth = dce8_data_return_bandwidth(wm);
9129 u32 dmif_req_bandwidth = dce8_dmif_request_bandwidth(wm);
9137 * @wm: watermark calculation data
9143 static u32 dce8_average_bandwidth(struct dce8_wm_params *wm)
9156 line_time.full = dfixed_const(wm->active_time + wm->blank_time);
9158 bpp.full = dfixed_const(wm->bytes_per_pixel);
9159 src_width.full = dfixed_const(wm->src_width);
9161 bandwidth.full = dfixed_mul(bandwidth, wm->vsc);
9170 * @wm: watermark calculation data
9176 static u32 dce8_latency_watermark(struct dce8_wm_params *wm)
9180 u32 available_bandwidth = dce8_available_bandwidth(wm);
9183 u32 dc_latency = 40000000 / wm->disp_clk; /* dc pipe latency */
9184 u32 other_heads_data_return_time = ((wm->num_heads + 1) * worst_chunk_return_time) +
9185 (wm->num_heads * cursor_line_pair_return_time);
9191 if (wm->num_heads == 0)
9196 if ((wm->vsc.full > a.full) ||
9197 ((wm->vsc.full > b.full) && (wm->vtaps >= 3)) ||
9198 (wm->vtaps >= 5) ||
9199 ((wm->vsc.full >= a.full) && wm->interlaced))
9205 b.full = dfixed_const(wm->num_heads);
9207 tmp = div_u64((u64) dmif_size * (u64) wm->disp_clk, mc_latency + 512);
9210 lb_fill_bw = min(tmp, wm->disp_clk * wm->bytes_per_pixel / 1000);
9212 a.full = dfixed_const(max_src_lines_per_dst_line * wm->src_width * wm->bytes_per_pixel);
9219 if (line_fill_time < wm->active_time)
9222 return latency + (line_fill_time - wm->active_time);
9230 * @wm: watermark calculation data
9237 static bool dce8_average_bandwidth_vs_dram_bandwidth_for_display(struct dce8_wm_params *wm)
9239 if (dce8_average_bandwidth(wm) <=
9240 (dce8_dram_bandwidth_for_display(wm) / wm->num_heads))
9250 * @wm: watermark calculation data
9257 static bool dce8_average_bandwidth_vs_available_bandwidth(struct dce8_wm_params *wm)
9259 if (dce8_average_bandwidth(wm) <=
9260 (dce8_available_bandwidth(wm) / wm->num_heads))
9269 * @wm: watermark calculation data
9275 static bool dce8_check_latency_hiding(struct dce8_wm_params *wm)
9277 u32 lb_partitions = wm->lb_size / wm->src_width;
9278 u32 line_time = wm->active_time + wm->blank_time;
9284 if (wm->vsc.full > a.full)
9287 if (lb_partitions <= (wm->vtaps + 1))
9293 latency_hiding = (latency_tolerant_lines * line_time + wm->blank_time);
9295 if (dce8_latency_watermark(wm) <= latency_hiding)
9414 /* select wm A */
9423 /* select wm B */