media: nuvoton: npcm-video: Fix stuck due to no video signal error

Fix the issue when start_frame and detect_resolution
functions are executed at the same time, which may cause driver
stops capturing due to status of no video signal error.

Signed-off-by: Michael Chang <zhang971090220@gmail.com>
Signed-off-by: Hans Verkuil <hverkuil@xs4all.nl>
This commit is contained in:
Michael Chang
2025-04-08 13:48:39 +08:00
committed by Hans Verkuil
parent a9076609e1
commit 497f1fb947

View File

@@ -863,7 +863,6 @@ static void npcm_video_detect_resolution(struct npcm_video *video)
struct regmap *gfxi = video->gfx_regmap;
unsigned int dispst;
video->v4l2_input_status = V4L2_IN_ST_NO_SIGNAL;
det->width = npcm_video_hres(video);
det->height = npcm_video_vres(video);
@@ -892,12 +891,16 @@ static void npcm_video_detect_resolution(struct npcm_video *video)
clear_bit(VIDEO_RES_CHANGING, &video->flags);
}
if (det->width && det->height)
if (det->width && det->height) {
video->v4l2_input_status = 0;
dev_dbg(video->dev, "Got resolution[%dx%d] -> [%dx%d], status %d\n",
act->width, act->height, det->width, det->height,
video->v4l2_input_status);
dev_dbg(video->dev, "Got resolution[%dx%d] -> [%dx%d], status %d\n",
act->width, act->height, det->width, det->height,
video->v4l2_input_status);
} else {
video->v4l2_input_status = V4L2_IN_ST_NO_SIGNAL;
dev_err(video->dev, "Got invalid resolution[%dx%d]\n", det->width,
det->height);
}
}
static int npcm_video_set_resolution(struct npcm_video *video,