Lines Matching full:vbif
16 * @vbif: Pointer to hardware vbif driver
20 static int _dpu_vbif_wait_for_xin_halt(struct dpu_hw_vbif *vbif, u32 xin_id) in _dpu_vbif_wait_for_xin_halt() argument
26 if (!vbif || !vbif->cap || !vbif->ops.get_halt_ctrl) { in _dpu_vbif_wait_for_xin_halt()
27 DPU_ERROR("invalid arguments vbif %d\n", vbif != NULL); in _dpu_vbif_wait_for_xin_halt()
31 timeout = ktime_add_us(ktime_get(), vbif->cap->xin_halt_timeout); in _dpu_vbif_wait_for_xin_halt()
33 status = vbif->ops.get_halt_ctrl(vbif, xin_id); in _dpu_vbif_wait_for_xin_halt()
37 status = vbif->ops.get_halt_ctrl(vbif, xin_id); in _dpu_vbif_wait_for_xin_halt()
45 DPU_ERROR("VBIF %d client %d not halting. TIMEDOUT.\n", in _dpu_vbif_wait_for_xin_halt()
46 vbif->idx - VBIF_0, xin_id); in _dpu_vbif_wait_for_xin_halt()
49 DRM_DEBUG_ATOMIC("VBIF %d client %d is halted\n", in _dpu_vbif_wait_for_xin_halt()
50 vbif->idx - VBIF_0, xin_id); in _dpu_vbif_wait_for_xin_halt()
58 * @vbif: Pointer to hardware vbif driver
62 static void _dpu_vbif_apply_dynamic_ot_limit(struct dpu_hw_vbif *vbif, in _dpu_vbif_apply_dynamic_ot_limit() argument
69 if (!vbif || !(vbif->cap->features & BIT(DPU_VBIF_QOS_OTLIM))) in _dpu_vbif_apply_dynamic_ot_limit()
80 tbl = params->rd ? &vbif->cap->dynamic_ot_rd_tbl : in _dpu_vbif_apply_dynamic_ot_limit()
81 &vbif->cap->dynamic_ot_wr_tbl; in _dpu_vbif_apply_dynamic_ot_limit()
90 DRM_DEBUG_ATOMIC("vbif:%d xin:%d w:%d h:%d fps:%d pps:%llu ot:%u\n", in _dpu_vbif_apply_dynamic_ot_limit()
91 vbif->idx - VBIF_0, params->xin_id, in _dpu_vbif_apply_dynamic_ot_limit()
98 * @vbif: Pointer to hardware vbif driver
102 static u32 _dpu_vbif_get_ot_limit(struct dpu_hw_vbif *vbif, in _dpu_vbif_get_ot_limit() argument
108 if (!vbif || !vbif->cap) { in _dpu_vbif_get_ot_limit()
109 DPU_ERROR("invalid arguments vbif %d\n", vbif != NULL); in _dpu_vbif_get_ot_limit()
113 if (vbif->cap->default_ot_wr_limit && !params->rd) in _dpu_vbif_get_ot_limit()
114 ot_lim = vbif->cap->default_ot_wr_limit; in _dpu_vbif_get_ot_limit()
115 else if (vbif->cap->default_ot_rd_limit && params->rd) in _dpu_vbif_get_ot_limit()
116 ot_lim = vbif->cap->default_ot_rd_limit; in _dpu_vbif_get_ot_limit()
126 _dpu_vbif_apply_dynamic_ot_limit(vbif, &ot_lim, params); in _dpu_vbif_get_ot_limit()
128 if (vbif && vbif->ops.get_limit_conf) { in _dpu_vbif_get_ot_limit()
129 val = vbif->ops.get_limit_conf(vbif, in _dpu_vbif_get_ot_limit()
136 DRM_DEBUG_ATOMIC("vbif:%d xin:%d ot_lim:%d\n", in _dpu_vbif_get_ot_limit()
137 vbif->idx - VBIF_0, params->xin_id, ot_lim); in _dpu_vbif_get_ot_limit()
151 struct dpu_hw_vbif *vbif = NULL; in dpu_vbif_set_ot_limit() local
162 vbif = dpu_kms->hw_vbif[i]; in dpu_vbif_set_ot_limit()
165 if (!vbif || !mdp) { in dpu_vbif_set_ot_limit()
166 DRM_DEBUG_ATOMIC("invalid arguments vbif %d mdp %d\n", in dpu_vbif_set_ot_limit()
167 vbif != NULL, mdp != NULL); in dpu_vbif_set_ot_limit()
172 !vbif->ops.set_limit_conf || in dpu_vbif_set_ot_limit()
173 !vbif->ops.set_halt_ctrl) in dpu_vbif_set_ot_limit()
177 if (vbif->ops.set_write_gather_en && !params->rd) in dpu_vbif_set_ot_limit()
178 vbif->ops.set_write_gather_en(vbif, params->xin_id); in dpu_vbif_set_ot_limit()
180 ot_lim = _dpu_vbif_get_ot_limit(vbif, params) & 0xFF; in dpu_vbif_set_ot_limit()
190 vbif->ops.set_limit_conf(vbif, params->xin_id, params->rd, ot_lim); in dpu_vbif_set_ot_limit()
192 vbif->ops.set_halt_ctrl(vbif, params->xin_id, true); in dpu_vbif_set_ot_limit()
194 ret = _dpu_vbif_wait_for_xin_halt(vbif, params->xin_id); in dpu_vbif_set_ot_limit()
196 trace_dpu_vbif_wait_xin_halt_fail(vbif->idx, params->xin_id); in dpu_vbif_set_ot_limit()
198 vbif->ops.set_halt_ctrl(vbif, params->xin_id, false); in dpu_vbif_set_ot_limit()
207 struct dpu_hw_vbif *vbif = NULL; in dpu_vbif_set_qos_remap() local
222 vbif = dpu_kms->hw_vbif[i]; in dpu_vbif_set_qos_remap()
227 if (!vbif || !vbif->cap) { in dpu_vbif_set_qos_remap()
228 DPU_ERROR("invalid vbif %d\n", params->vbif_idx); in dpu_vbif_set_qos_remap()
232 if (!vbif->ops.set_qos_remap || !mdp->ops.setup_clk_force_ctrl) { in dpu_vbif_set_qos_remap()
237 qos_tbl = params->is_rt ? &vbif->cap->qos_rt_tbl : in dpu_vbif_set_qos_remap()
238 &vbif->cap->qos_nrt_tbl; in dpu_vbif_set_qos_remap()
248 DRM_DEBUG_ATOMIC("vbif:%d xin:%d lvl:%d/%d\n", in dpu_vbif_set_qos_remap()
251 vbif->ops.set_qos_remap(vbif, params->xin_id, i, in dpu_vbif_set_qos_remap()
261 struct dpu_hw_vbif *vbif; in dpu_vbif_clear_errors() local
265 vbif = dpu_kms->hw_vbif[i]; in dpu_vbif_clear_errors()
266 if (vbif && vbif->ops.clear_errors) { in dpu_vbif_clear_errors()
267 vbif->ops.clear_errors(vbif, &pnd, &src); in dpu_vbif_clear_errors()
269 DRM_DEBUG_KMS("VBIF %d: pnd 0x%X, src 0x%X\n", in dpu_vbif_clear_errors()
270 vbif->idx - VBIF_0, pnd, src); in dpu_vbif_clear_errors()
278 struct dpu_hw_vbif *vbif; in dpu_vbif_init_memtypes() local
282 vbif = dpu_kms->hw_vbif[i]; in dpu_vbif_init_memtypes()
283 if (vbif && vbif->cap && vbif->ops.set_mem_type) { in dpu_vbif_init_memtypes()
284 for (j = 0; j < vbif->cap->memtype_count; j++) in dpu_vbif_init_memtypes()
285 vbif->ops.set_mem_type( in dpu_vbif_init_memtypes()
286 vbif, j, vbif->cap->memtype[j]); in dpu_vbif_init_memtypes()
299 entry = debugfs_create_dir("vbif", debugfs_root); in dpu_debugfs_vbif_init()
302 const struct dpu_vbif_cfg *vbif = &dpu_kms->catalog->vbif[i]; in dpu_debugfs_vbif_init() local
304 snprintf(vbif_name, sizeof(vbif_name), "%d", vbif->id); in dpu_debugfs_vbif_init()
309 (u32 *)&vbif->features); in dpu_debugfs_vbif_init()
312 (u32 *)&vbif->xin_halt_timeout); in dpu_debugfs_vbif_init()
315 (u32 *)&vbif->default_ot_rd_limit); in dpu_debugfs_vbif_init()
318 (u32 *)&vbif->default_ot_wr_limit); in dpu_debugfs_vbif_init()
320 for (j = 0; j < vbif->dynamic_ot_rd_tbl.count; j++) { in dpu_debugfs_vbif_init()
322 &vbif->dynamic_ot_rd_tbl.cfg[j]; in dpu_debugfs_vbif_init()
334 for (j = 0; j < vbif->dynamic_ot_wr_tbl.count; j++) { in dpu_debugfs_vbif_init()
336 &vbif->dynamic_ot_wr_tbl.cfg[j]; in dpu_debugfs_vbif_init()