Message ID | 1650574112-25294-4-git-send-email-quic_abhinavk@quicinc.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | Separate wb_idx and intf_idx in dpu_encoder | expand |
On 21/04/2022 23:48, Abhinav Kumar wrote: > Add wb_idx to existing DRM prints in dpu_encoder and also > print the intf_mode so that its clear that for any INTF_CMD/VID > there will be a valid intf_idx and any INTF_WB_* there will be a > valid wb_idx. > > Update the debugfs to add the same information. Here is a sample > output with this change: > > root:/sys/kernel/debug/dri/0/encoder31# cat status > intf:1 wb:-1 vsync: 31 underrun: 0 mode: INTF_MODE_VIDEO > root:/sys/kernel/debug/dri/0/encoder33# cat status > intf:-1 wb:2 vsync: 7 underrun: 0 mode: INTF_MODE_WB_LINE > > Also remove DPU_DEBUG_PHYS macros as its unused because the > respective dpu_encoder_phys_* files have their own macros. > > Signed-off-by: Abhinav Kumar <quic_abhinavk@quicinc.com> > --- > drivers/gpu/drm/msm/disp/dpu1/dpu_encoder.c | 50 +++++++++++++---------------- > 1 file changed, 22 insertions(+), 28 deletions(-) > > diff --git a/drivers/gpu/drm/msm/disp/dpu1/dpu_encoder.c b/drivers/gpu/drm/msm/disp/dpu1/dpu_encoder.c > index 054d7e4..871ce87 100644 > --- a/drivers/gpu/drm/msm/disp/dpu1/dpu_encoder.c > +++ b/drivers/gpu/drm/msm/disp/dpu1/dpu_encoder.c > @@ -37,18 +37,6 @@ > #define DPU_ERROR_ENC(e, fmt, ...) DPU_ERROR("enc%d " fmt,\ > (e) ? (e)->base.base.id : -1, ##__VA_ARGS__) > > -#define DPU_DEBUG_PHYS(p, fmt, ...) DRM_DEBUG_ATOMIC("enc%d intf%d pp%d " fmt,\ > - (p) ? (p)->parent->base.id : -1, \ > - (p) ? (p)->intf_idx - INTF_0 : -1, \ > - (p) ? ((p)->hw_pp ? (p)->hw_pp->idx - PINGPONG_0 : -1) : -1, \ > - ##__VA_ARGS__) > - > -#define DPU_ERROR_PHYS(p, fmt, ...) DPU_ERROR("enc%d intf%d pp%d " fmt,\ > - (p) ? (p)->parent->base.id : -1, \ > - (p) ? (p)->intf_idx - INTF_0 : -1, \ > - (p) ? ((p)->hw_pp ? (p)->hw_pp->idx - PINGPONG_0 : -1) : -1, \ > - ##__VA_ARGS__) > - > /* > * Two to anticipate panels that can do cmd/vid dynamic switching > * plan is to create all possible physical encoder types, and switch between > @@ -262,12 +250,28 @@ static void _dpu_encoder_setup_dither(struct dpu_hw_pingpong *hw_pp, unsigned bp > hw_pp->ops.setup_dither(hw_pp, &dither_cfg); > } > > +static char *dpu_encoder_helper_get_intf_type(enum dpu_intf_mode intf_mode) > +{ I'd rather convert this to switch() {...} With that fixed: Reviewed-by: Dmitry Baryshkov <dmitry.baryshkov@linaro.org> > + if (intf_mode == INTF_MODE_VIDEO) > + return "INTF_MODE_VIDEO"; > + else if (intf_mode == INTF_MODE_CMD) > + return "INTF_MODE_CMD"; > + else if (intf_mode == INTF_MODE_WB_BLOCK) > + return "INTF_MODE_WB_BLOCK"; > + else if (intf_mode == INTF_MODE_WB_LINE) > + return "INTF_MODE_WB_LINE"; > + else > + return "INTF_MODE_UNKNOWN"; > +} > + > void dpu_encoder_helper_report_irq_timeout(struct dpu_encoder_phys *phys_enc, > enum dpu_intr_idx intr_idx) > { > - DRM_ERROR("irq timeout id=%u, intf=%d, pp=%d, intr=%d\n", > - DRMID(phys_enc->parent), phys_enc->intf_idx - INTF_0, > - phys_enc->hw_pp->idx - PINGPONG_0, intr_idx); > + DRM_ERROR("irq timeout id=%u, intf_mode=%s intf=%d wb=%d, pp=%d, intr=%d\n", > + DRMID(phys_enc->parent), > + dpu_encoder_helper_get_intf_type(phys_enc->intf_mode), > + phys_enc->intf_idx - INTF_0, phys_enc->wb_idx - WB_0, > + phys_enc->hw_pp->idx - PINGPONG_0, intr_idx); > > if (phys_enc->parent_ops->handle_frame_done) > phys_enc->parent_ops->handle_frame_done( > @@ -2042,22 +2046,12 @@ static int _dpu_encoder_status_show(struct seq_file *s, void *data) > for (i = 0; i < dpu_enc->num_phys_encs; i++) { > struct dpu_encoder_phys *phys = dpu_enc->phys_encs[i]; > > - seq_printf(s, "intf:%d vsync:%8d underrun:%8d ", > - phys->intf_idx - INTF_0, > + seq_printf(s, "intf:%d wb:%d vsync:%8d underrun:%8d ", > + phys->intf_idx - INTF_0, phys->wb_idx - WB_0, > atomic_read(&phys->vsync_cnt), > atomic_read(&phys->underrun_cnt)); > > - switch (phys->intf_mode) { > - case INTF_MODE_VIDEO: > - seq_puts(s, "mode: video\n"); > - break; > - case INTF_MODE_CMD: > - seq_puts(s, "mode: command\n"); > - break; > - default: > - seq_puts(s, "mode: ???\n"); > - break; > - } > + seq_printf(s, "mode: %s\n", dpu_encoder_helper_get_intf_type(phys->intf_mode)); > } > mutex_unlock(&dpu_enc->enc_lock); >
diff --git a/drivers/gpu/drm/msm/disp/dpu1/dpu_encoder.c b/drivers/gpu/drm/msm/disp/dpu1/dpu_encoder.c index 054d7e4..871ce87 100644 --- a/drivers/gpu/drm/msm/disp/dpu1/dpu_encoder.c +++ b/drivers/gpu/drm/msm/disp/dpu1/dpu_encoder.c @@ -37,18 +37,6 @@ #define DPU_ERROR_ENC(e, fmt, ...) DPU_ERROR("enc%d " fmt,\ (e) ? (e)->base.base.id : -1, ##__VA_ARGS__) -#define DPU_DEBUG_PHYS(p, fmt, ...) DRM_DEBUG_ATOMIC("enc%d intf%d pp%d " fmt,\ - (p) ? (p)->parent->base.id : -1, \ - (p) ? (p)->intf_idx - INTF_0 : -1, \ - (p) ? ((p)->hw_pp ? (p)->hw_pp->idx - PINGPONG_0 : -1) : -1, \ - ##__VA_ARGS__) - -#define DPU_ERROR_PHYS(p, fmt, ...) DPU_ERROR("enc%d intf%d pp%d " fmt,\ - (p) ? (p)->parent->base.id : -1, \ - (p) ? (p)->intf_idx - INTF_0 : -1, \ - (p) ? ((p)->hw_pp ? (p)->hw_pp->idx - PINGPONG_0 : -1) : -1, \ - ##__VA_ARGS__) - /* * Two to anticipate panels that can do cmd/vid dynamic switching * plan is to create all possible physical encoder types, and switch between @@ -262,12 +250,28 @@ static void _dpu_encoder_setup_dither(struct dpu_hw_pingpong *hw_pp, unsigned bp hw_pp->ops.setup_dither(hw_pp, &dither_cfg); } +static char *dpu_encoder_helper_get_intf_type(enum dpu_intf_mode intf_mode) +{ + if (intf_mode == INTF_MODE_VIDEO) + return "INTF_MODE_VIDEO"; + else if (intf_mode == INTF_MODE_CMD) + return "INTF_MODE_CMD"; + else if (intf_mode == INTF_MODE_WB_BLOCK) + return "INTF_MODE_WB_BLOCK"; + else if (intf_mode == INTF_MODE_WB_LINE) + return "INTF_MODE_WB_LINE"; + else + return "INTF_MODE_UNKNOWN"; +} + void dpu_encoder_helper_report_irq_timeout(struct dpu_encoder_phys *phys_enc, enum dpu_intr_idx intr_idx) { - DRM_ERROR("irq timeout id=%u, intf=%d, pp=%d, intr=%d\n", - DRMID(phys_enc->parent), phys_enc->intf_idx - INTF_0, - phys_enc->hw_pp->idx - PINGPONG_0, intr_idx); + DRM_ERROR("irq timeout id=%u, intf_mode=%s intf=%d wb=%d, pp=%d, intr=%d\n", + DRMID(phys_enc->parent), + dpu_encoder_helper_get_intf_type(phys_enc->intf_mode), + phys_enc->intf_idx - INTF_0, phys_enc->wb_idx - WB_0, + phys_enc->hw_pp->idx - PINGPONG_0, intr_idx); if (phys_enc->parent_ops->handle_frame_done) phys_enc->parent_ops->handle_frame_done( @@ -2042,22 +2046,12 @@ static int _dpu_encoder_status_show(struct seq_file *s, void *data) for (i = 0; i < dpu_enc->num_phys_encs; i++) { struct dpu_encoder_phys *phys = dpu_enc->phys_encs[i]; - seq_printf(s, "intf:%d vsync:%8d underrun:%8d ", - phys->intf_idx - INTF_0, + seq_printf(s, "intf:%d wb:%d vsync:%8d underrun:%8d ", + phys->intf_idx - INTF_0, phys->wb_idx - WB_0, atomic_read(&phys->vsync_cnt), atomic_read(&phys->underrun_cnt)); - switch (phys->intf_mode) { - case INTF_MODE_VIDEO: - seq_puts(s, "mode: video\n"); - break; - case INTF_MODE_CMD: - seq_puts(s, "mode: command\n"); - break; - default: - seq_puts(s, "mode: ???\n"); - break; - } + seq_printf(s, "mode: %s\n", dpu_encoder_helper_get_intf_type(phys->intf_mode)); } mutex_unlock(&dpu_enc->enc_lock);
Add wb_idx to existing DRM prints in dpu_encoder and also print the intf_mode so that its clear that for any INTF_CMD/VID there will be a valid intf_idx and any INTF_WB_* there will be a valid wb_idx. Update the debugfs to add the same information. Here is a sample output with this change: root:/sys/kernel/debug/dri/0/encoder31# cat status intf:1 wb:-1 vsync: 31 underrun: 0 mode: INTF_MODE_VIDEO root:/sys/kernel/debug/dri/0/encoder33# cat status intf:-1 wb:2 vsync: 7 underrun: 0 mode: INTF_MODE_WB_LINE Also remove DPU_DEBUG_PHYS macros as its unused because the respective dpu_encoder_phys_* files have their own macros. Signed-off-by: Abhinav Kumar <quic_abhinavk@quicinc.com> --- drivers/gpu/drm/msm/disp/dpu1/dpu_encoder.c | 50 +++++++++++++---------------- 1 file changed, 22 insertions(+), 28 deletions(-)