mirror of
https://github.com/hardkernel/linux.git
synced 2026-06-07 19:30:30 +09:00
media: rockchip: isp/ispp: fix error detected by depmod
DEPMOD 4.19.111 depmod: ERROR: Cycle detected: video_rkisp -> video_rkispp -> video_rkisp depmod: ERROR: Found 2 modules in dependency cycles! Signed-off-by: Xu Hongfei <xuhf@rock-chips.com> Change-Id: I4136dcb32e6438865b2d1d1f8df811748db1f549
This commit is contained in:
@@ -433,7 +433,6 @@ static int frame_end(struct rkisp_bridge_device *dev, bool en)
|
||||
{
|
||||
struct rkisp_hw_dev *hw = dev->ispdev->hw_dev;
|
||||
struct v4l2_subdev *sd = v4l2_get_subdev_hostdata(&dev->sd);
|
||||
struct rkisp_ispp_reg *reg_buf;
|
||||
unsigned long lock_flags = 0;
|
||||
u64 ns = ktime_get_ns();
|
||||
|
||||
@@ -452,6 +451,7 @@ static int frame_end(struct rkisp_bridge_device *dev, bool en)
|
||||
spin_unlock_irqrestore(&hw->buf_lock, lock_flags);
|
||||
} else {
|
||||
u64 sof_ns = 0;
|
||||
struct rkisp_ispp_reg *reg_buf = NULL;
|
||||
|
||||
ns = 0;
|
||||
rkisp_dmarx_get_frame(dev->ispdev,
|
||||
@@ -462,7 +462,8 @@ static int frame_end(struct rkisp_bridge_device *dev, bool en)
|
||||
ns = ktime_get_ns();
|
||||
hw->cur_buf->frame_timestamp = ns;
|
||||
hw->cur_buf->index = dev->ispdev->dev_id;
|
||||
rkispp_request_regbuf(sd, ®_buf);
|
||||
v4l2_subdev_call(sd, core, ioctl, RKISP_ISPP_CMD_REQUEST_REGBUF,
|
||||
®_buf);
|
||||
if (reg_buf) {
|
||||
reg_buf->stat = ISP_ISPP_INUSE;
|
||||
reg_buf->dev_id = hw->cur_buf->index;
|
||||
|
||||
@@ -22,6 +22,10 @@
|
||||
_IOW('V', BASE_VIDIOC_PRIVATE + 0, struct rkisp_ispp_mode)
|
||||
#define RKISP_ISPP_CMD_SET_FMT \
|
||||
_IOW('V', BASE_VIDIOC_PRIVATE + 1, struct max_input)
|
||||
#define RKISP_ISPP_CMD_REQUEST_REGBUF \
|
||||
_IOW('V', BASE_VIDIOC_PRIVATE + 2, struct rkisp_ispp_reg *)
|
||||
#define RKISP_ISPP_CMD_GET_REG_WITHSTREAM \
|
||||
_IOW('V', BASE_VIDIOC_PRIVATE + 3, bool)
|
||||
|
||||
enum rkisp_ispp_dev {
|
||||
DEV_ID0 = 0,
|
||||
@@ -113,20 +117,4 @@ static inline void rkisp_get_bridge_sd(struct platform_device *dev,
|
||||
}
|
||||
#endif
|
||||
|
||||
#if IS_ENABLED(CONFIG_VIDEO_ROCKCHIP_ISPP)
|
||||
void rkispp_request_regbuf(struct v4l2_subdev *sd, struct rkisp_ispp_reg **free_buf);
|
||||
bool rkispp_get_reg_withstream(void);
|
||||
#else
|
||||
static inline void rkispp_request_regbuf(struct v4l2_subdev *sd,
|
||||
struct rkisp_ispp_reg **free_buf)
|
||||
{
|
||||
*free_buf = NULL;
|
||||
}
|
||||
|
||||
static inline bool rkispp_get_reg_withstream(void)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif
|
||||
|
||||
@@ -1257,11 +1257,15 @@ rkisp_stats_send_meas_v2x(struct rkisp_isp_stats_vdev *stats_vdev,
|
||||
}
|
||||
|
||||
if (cur_buf) {
|
||||
bool reg_withstream = false;
|
||||
struct v4l2_subdev *sd = v4l2_get_subdev_hostdata(&stats_vdev->dev->br_dev.sd);
|
||||
|
||||
vb2_set_plane_payload(&cur_buf->vb.vb2_buf, 0,
|
||||
sizeof(struct rkisp_isp2x_stat_buffer));
|
||||
cur_buf->vb.sequence = cur_frame_id;
|
||||
cur_buf->vb.vb2_buf.timestamp = meas_work->timestamp;
|
||||
if (rkispp_get_reg_withstream()) {
|
||||
v4l2_subdev_call(sd, core, ioctl, RKISP_ISPP_CMD_GET_REG_WITHSTREAM, ®_withstream);
|
||||
if (reg_withstream) {
|
||||
struct rkisp_isp2x_stat_buffer *tmp_statsbuf;
|
||||
|
||||
tmp_statsbuf = (struct rkisp_isp2x_stat_buffer *)stats_vdev->tmp_statsbuf.vaddr;
|
||||
@@ -1462,6 +1466,9 @@ static struct rkisp_isp_stats_ops rkisp_isp_stats_ops_tbl = {
|
||||
|
||||
void rkisp_stats_first_ddr_config_v2x(struct rkisp_isp_stats_vdev *stats_vdev)
|
||||
{
|
||||
bool reg_withstream = false;
|
||||
struct v4l2_subdev *sd = v4l2_get_subdev_hostdata(&stats_vdev->dev->br_dev.sd);
|
||||
|
||||
if (stats_vdev->rd_stats_from_ddr) {
|
||||
stats_vdev->wr_buf_idx = 0;
|
||||
stats_vdev->rd_buf_idx = 0;
|
||||
@@ -1474,7 +1481,8 @@ void rkisp_stats_first_ddr_config_v2x(struct rkisp_isp_stats_vdev *stats_vdev)
|
||||
SW_3A_DDR_WRITE_EN, false);
|
||||
}
|
||||
|
||||
if (rkispp_get_reg_withstream()) {
|
||||
v4l2_subdev_call(sd, core, ioctl, RKISP_ISPP_CMD_GET_REG_WITHSTREAM, ®_withstream);
|
||||
if (reg_withstream) {
|
||||
stats_vdev->tmp_statsbuf.is_need_vaddr = true;
|
||||
stats_vdev->tmp_statsbuf.size = sizeof(struct rkisp_isp2x_stat_buffer);
|
||||
rkisp_alloc_buffer(stats_vdev->dev, &stats_vdev->tmp_statsbuf);
|
||||
|
||||
@@ -457,10 +457,8 @@ void rkispp_release_regbuf(struct rkispp_device *ispp, struct rkisp_ispp_reg *fr
|
||||
freebuf->stat = ISP_ISPP_FREE;
|
||||
}
|
||||
|
||||
void rkispp_request_regbuf(struct v4l2_subdev *sd, struct rkisp_ispp_reg **free_buf)
|
||||
void rkispp_request_regbuf(struct rkispp_device *dev, struct rkisp_ispp_reg **free_buf)
|
||||
{
|
||||
struct rkispp_subdev *ispp_sdev = v4l2_get_subdevdata(sd);
|
||||
struct rkispp_device *dev = ispp_sdev->dev;
|
||||
struct rkispp_hw_dev *hw = dev->hw_dev;
|
||||
int ret;
|
||||
|
||||
@@ -474,11 +472,8 @@ void rkispp_request_regbuf(struct v4l2_subdev *sd, struct rkisp_ispp_reg **free_
|
||||
(*free_buf)->stat = ISP_ISPP_INUSE;
|
||||
}
|
||||
}
|
||||
EXPORT_SYMBOL(rkispp_request_regbuf);
|
||||
|
||||
bool rkispp_get_reg_withstream(void)
|
||||
{
|
||||
return rkispp_reg_withstream;
|
||||
}
|
||||
EXPORT_SYMBOL(rkispp_get_reg_withstream);
|
||||
|
||||
|
||||
@@ -121,4 +121,6 @@ void rkispp_free_common_dummy_buf(struct rkispp_device *dev);
|
||||
int rkispp_find_regbuf_by_id(struct rkispp_device *ispp, struct rkisp_ispp_reg **free_buf,
|
||||
u32 dev_id, u32 frame_id);
|
||||
void rkispp_release_regbuf(struct rkispp_device *ispp, struct rkisp_ispp_reg *freebuf);
|
||||
void rkispp_request_regbuf(struct rkispp_device *dev, struct rkisp_ispp_reg **free_buf);
|
||||
bool rkispp_get_reg_withstream(void);
|
||||
#endif
|
||||
|
||||
@@ -374,6 +374,8 @@ static long rkispp_ioctl(struct v4l2_subdev *sd, unsigned int cmd, void *arg)
|
||||
struct rkispp_device *ispp_dev = ispp_sdev->dev;
|
||||
struct rkispp_fecbuf_info *fecbuf;
|
||||
struct rkispp_fecbuf_size *fecsize;
|
||||
struct rkisp_ispp_reg **reg_buf;
|
||||
bool *rkispp_reg_withstream;
|
||||
long ret = 0;
|
||||
|
||||
if (!arg)
|
||||
@@ -388,6 +390,14 @@ static long rkispp_ioctl(struct v4l2_subdev *sd, unsigned int cmd, void *arg)
|
||||
fecsize = (struct rkispp_fecbuf_size *)arg;
|
||||
rkispp_params_set_fecbuf_size(&ispp_dev->params_vdev, fecsize);
|
||||
break;
|
||||
case RKISP_ISPP_CMD_REQUEST_REGBUF:
|
||||
reg_buf = (struct rkisp_ispp_reg **)arg;
|
||||
rkispp_request_regbuf(ispp_dev, reg_buf);
|
||||
break;
|
||||
case RKISP_ISPP_CMD_GET_REG_WITHSTREAM:
|
||||
rkispp_reg_withstream = arg;
|
||||
*rkispp_reg_withstream = rkispp_get_reg_withstream();
|
||||
break;
|
||||
default:
|
||||
ret = -ENOIOCTLCMD;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user