mirror of
https://github.com/hardkernel/linux.git
synced 2026-06-11 05:17:10 +09:00
vdin: Flash blurre screen when change hdmi 4k timing [1/1]
PD#SWPL-8153 Problem: Flash blurre screen when change all 4K format Solution: if no video buffer resouce, needn't set afbce regiter when need switch afbc mode. Verify: tl1 Change-Id: Ifb867cdeda2b6d3536246b79531a5bf9027e01a1 Signed-off-by: Yong Qin <yong.qin@amlogic.com>
This commit is contained in:
@@ -14725,6 +14725,10 @@ M: Xuhua Zhang <xuhua.zhang@amlogic.com>
|
||||
F: drivers/amlogic/media/vin/tvin/vdin/vdin_afbce.c
|
||||
F: drivers/amlogic/media/vin/tvin/vdin/vdin_afbce.h
|
||||
|
||||
AMLOGIC VDIN DRIVERS
|
||||
M: Yong Qin <yong.qin@amlogic.com>
|
||||
F: drivers/amlogic/media/vin/tvin/vdin/vdin_trace.h
|
||||
|
||||
AMLOGIC MESONAXG S400 DTS
|
||||
M: Yuegui He <yuegui.he@amlogic.com>
|
||||
F: arch/arm64/boot/dts/amlogic/axg_s400_v03.dts
|
||||
|
||||
@@ -808,6 +808,7 @@ static void vdin_dump_state(struct vdin_dev_s *devp)
|
||||
pr_info("vdin_irq_flag: %d, vdin_rest_flag: %d, irq_cnt: %d, rdma_irq_cnt: %d\n",
|
||||
devp->vdin_irq_flag, devp->vdin_reset_flag,
|
||||
devp->irq_cnt, devp->rdma_irq_cnt);
|
||||
pr_info("vdin_drop_cnt: %d\n", vdin_drop_cnt);
|
||||
pr_info("game_mode : %d\n", devp->game_mode);
|
||||
pr_info("dolby_input : %d\n", devp->dv.dolby_input);
|
||||
if ((devp->cma_config_en != 1) || !(devp->cma_config_flag & 0x100))
|
||||
|
||||
@@ -149,7 +149,7 @@ static unsigned int isr_flag;
|
||||
module_param(isr_flag, uint, 0664);
|
||||
MODULE_PARM_DESC(isr_flag, "flag which affect the skip field");
|
||||
|
||||
static unsigned int vdin_drop_cnt;
|
||||
unsigned int vdin_drop_cnt;
|
||||
module_param(vdin_drop_cnt, uint, 0664);
|
||||
MODULE_PARM_DESC(vdin_drop_cnt, "vdin_drop_cnt");
|
||||
|
||||
@@ -1430,9 +1430,7 @@ irqreturn_t vdin_isr(int irq, void *dev_id)
|
||||
* this code about system time must be outside of spinlock.
|
||||
* because the spinlock may affect the system time.
|
||||
*/
|
||||
|
||||
spin_lock_irqsave(&devp->isr_lock, flags);
|
||||
|
||||
if (devp->afbce_mode == 1) {
|
||||
/* no need reset mif under afbc mode */
|
||||
devp->vdin_reset_flag = 0;
|
||||
@@ -1599,8 +1597,10 @@ irqreturn_t vdin_isr(int irq, void *dev_id)
|
||||
curr_wr_vfe = devp->curr_wr_vfe;
|
||||
curr_wr_vf = &curr_wr_vfe->vf;
|
||||
|
||||
next_wr_vfe = provider_vf_peek(devp->vfp);
|
||||
|
||||
/* change afbce mode */
|
||||
if (devp->afbce_mode_pre != devp->afbce_mode)
|
||||
if (next_wr_vfe && (devp->afbce_mode_pre != devp->afbce_mode))
|
||||
vdin_afbce_mode_update(devp);
|
||||
|
||||
/* change color matrix */
|
||||
@@ -1707,7 +1707,6 @@ irqreturn_t vdin_isr(int irq, void *dev_id)
|
||||
goto irq_handled;
|
||||
}
|
||||
|
||||
next_wr_vfe = provider_vf_peek(devp->vfp);
|
||||
if (!next_wr_vfe) {
|
||||
/*add for force vdin buffer recycle*/
|
||||
if (devp->flags & VDIN_FLAG_FORCE_RECYCLE) {
|
||||
|
||||
@@ -48,7 +48,7 @@
|
||||
/* Ref.2019/04/25: tl1 vdin0 afbce dynamically switch support,
|
||||
* vpp also should support this function
|
||||
*/
|
||||
#define VDIN_VER "Ref.2019/05/14"
|
||||
#define VDIN_VER "Ref.2019/05/31"
|
||||
|
||||
/*the counter of vdin*/
|
||||
#define VDIN_MAX_DEVS 2
|
||||
@@ -412,7 +412,7 @@ struct vdin_v4l2_param_s {
|
||||
extern unsigned int max_recycle_frame_cnt;
|
||||
extern unsigned int max_ignore_frame_cnt;
|
||||
extern unsigned int skip_frame_debug;
|
||||
|
||||
extern unsigned int vdin_drop_cnt;
|
||||
extern unsigned int vdin0_afbce_debug_force;
|
||||
|
||||
extern struct vframe_provider_s *vf_get_provider_by_name(
|
||||
|
||||
78
drivers/amlogic/media/vin/tvin/vdin/vdin_trace.h
Normal file
78
drivers/amlogic/media/vin/tvin/vdin/vdin_trace.h
Normal file
@@ -0,0 +1,78 @@
|
||||
/*
|
||||
* drivers/amlogic/media/vin/tvin/vdin/vdin_trace.h
|
||||
*
|
||||
* Copyright (C) 2017 Amlogic, Inc. All rights reserved.
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation; either version 2 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful, but WITHOUT
|
||||
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
|
||||
* more details.
|
||||
*
|
||||
*/
|
||||
|
||||
#undef TRACE_SYSTEM
|
||||
#define TRACE_SYSTEM vdin
|
||||
|
||||
#if !defined(_VDIN_TRACE_H) || defined(TRACE_HEADER_MULTI_READ)
|
||||
#define _VDIN_TRACE_H
|
||||
|
||||
#include <linux/tracepoint.h>
|
||||
|
||||
/* single lifecycle events */
|
||||
DECLARE_EVENT_CLASS(vdin_event_class,
|
||||
TP_PROTO(const char *name, int field_cnt, unsigned long time),
|
||||
TP_ARGS(name, field_cnt, time),
|
||||
TP_STRUCT__entry(
|
||||
__string(name, name)
|
||||
__field(int, field_cnt)
|
||||
__field(unsigned long, time)
|
||||
),
|
||||
TP_fast_assign(
|
||||
__assign_str(name, name);
|
||||
__entry->field_cnt = field_cnt;
|
||||
__entry->time = time;
|
||||
),
|
||||
TP_printk("[%s-%dth-%lums]", __get_str(name),
|
||||
__entry->field_cnt, __entry->time)
|
||||
);
|
||||
|
||||
#define DEFINE_VDIN_EVENT(name) \
|
||||
DEFINE_EVENT(vdin_event_class, name, \
|
||||
TP_PROTO(const char *name, int field_cnt, unsigned long time), \
|
||||
TP_ARGS(name, field_cnt, time))
|
||||
|
||||
DEFINE_VDIN_EVENT(vdin_afbc);
|
||||
#endif /* _VDEC_TRACE_H */
|
||||
|
||||
#if 0
|
||||
#define CREATE_TRACE_POINTS
|
||||
#include "vdin_trace.h"
|
||||
#undef TRACE_INCLUDE_PATH
|
||||
#undef TRACE_INCLUDE_FILE
|
||||
#define TRACE_INCLUDE_PATH .
|
||||
#define TRACE_INCLUDE_FILE vdin_trace
|
||||
#include <trace/define_trace.h>
|
||||
|
||||
#define VDIN_TRACE
|
||||
#ifdef VDIN_TRACE
|
||||
trace_vdin_afbc("vdin-afbc", devp->afbce_mode, devp->frame_cnt);
|
||||
#endif
|
||||
|
||||
#endif
|
||||
|
||||
/*
|
||||
* a. clear pipe
|
||||
* cat /sys/kernel/debug/tracing/trace_pipe
|
||||
* b. enable trace di:
|
||||
* echo 1 >/sys/kernel/debug/tracing/events/vdin/vdin_afbc/enable
|
||||
* echo 1 >/sys/kernel/debug/tracing/tracing_on
|
||||
* c. disable trace
|
||||
* echo 0 >/sys/kernel/debug/tracing/tracing_on
|
||||
* cat /sys/kernel/debug/tracing/trace_pipe
|
||||
*/
|
||||
|
||||
Reference in New Issue
Block a user