mirror of
https://github.com/hardkernel/linux.git
synced 2026-06-06 10:58:48 +09:00
video: rockchip: vehicle support drop vop show frames
sample usage:
cif_sensor: cif_sensor {
nvp6324 {
...
drop_frames = <4>; //frames to drop
...
};
};
Signed-off-by: Wang Panzhenzhuan <randy.wang@rock-chips.com>
Change-Id: I7c7ad473471e2b90ab32600a3d7a31511870307d
This commit is contained in:
committed by
Tao Huang
parent
5d2e8c3cf9
commit
a365675d53
@@ -63,6 +63,7 @@ struct vehicle_ad_dev {
|
||||
u32 channel_reso[PAD_MAX];
|
||||
u8 detect_status;
|
||||
u8 last_detect_status;
|
||||
int drop_frames;
|
||||
};
|
||||
|
||||
int vehicle_generic_sensor_write(struct vehicle_ad_dev *ad, char reg, char *pval);
|
||||
|
||||
@@ -1950,6 +1950,7 @@ int nvp6324_ad_get_cfg(struct vehicle_cfg **cfg)
|
||||
}
|
||||
|
||||
nvp6324_g_addev->cfg.ad_ready = true;
|
||||
nvp6324_g_addev->cfg.drop_frames = nvp6324_g_addev->drop_frames;
|
||||
|
||||
*cfg = &nvp6324_g_addev->cfg;
|
||||
|
||||
|
||||
@@ -139,6 +139,7 @@ struct vehicle_cfg {
|
||||
/*0:no, 1:90; 2:180; 4:270; 0x10:mirror-y; 0x20:mirror-x*/
|
||||
int rotate_mirror;
|
||||
struct rkmodule_csi_dphy_param *dphy_param;
|
||||
int drop_frames;
|
||||
};
|
||||
|
||||
#endif
|
||||
|
||||
@@ -1076,6 +1076,7 @@ static void rk_drm_vehicle_commit(struct flinger *flinger, struct graphic_buffer
|
||||
rockchip_drm_direct_show_commit(flinger->drm_dev, &commit_info);
|
||||
}
|
||||
|
||||
static int drop_frames_number;
|
||||
static int rk_flinger_vop_show(struct flinger *flinger,
|
||||
struct graphic_buffer *buffer)
|
||||
{
|
||||
@@ -1084,6 +1085,12 @@ static int rk_flinger_vop_show(struct flinger *flinger,
|
||||
|
||||
VEHICLE_DG("flinger vop show buffer wxh(%zux%zu)\n",
|
||||
buffer->src.w, buffer->src.h);
|
||||
if (drop_frames_number > 0) {
|
||||
VEHICLE_INFO("%s discard the frame num(%d)!\n", __func__, drop_frames_number);
|
||||
drop_frames_number--;
|
||||
return 0;
|
||||
}
|
||||
|
||||
if (!flinger->running)
|
||||
return 0;
|
||||
|
||||
@@ -1444,6 +1451,7 @@ int vehicle_flinger_reverse_open(struct vehicle_cfg *v_cfg,
|
||||
flg->cvbs_field_count = 0;
|
||||
memcpy(&flg->v_cfg, v_cfg, sizeof(struct vehicle_cfg));
|
||||
flg->running = true;
|
||||
drop_frames_number = v_cfg->drop_frames;
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
@@ -285,6 +285,12 @@ int vehicle_parse_sensor(struct vehicle_ad_dev *ad)
|
||||
if (of_property_read_u32(cp, "mclk_rate", &ad->mclk_rate))
|
||||
VEHICLE_DGERR("Get %s mclk_rate failed!\n", cp->name);
|
||||
|
||||
if (of_property_read_u32(cp, "drop_frames",
|
||||
&ad->drop_frames)) {
|
||||
VEHICLE_DGERR("%s:Get sensor, drop-frames failed!\n", __func__);
|
||||
ad->drop_frames = 0; //default drop frames;
|
||||
}
|
||||
|
||||
if (of_property_read_u32(cp, "rst_active", &ad->rst_active))
|
||||
VEHICLE_DGERR("Get %s rst_active failed!", cp->name);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user