分享

msm_generic_buf_mgr

 新用户8389DdzY 2021-09-22

static int32_t __init msm_buf_mngr_init(void)

{

}

一:

v4l2_subdev_notify(&msm_buf_mngr_dev->subdev.sd, MSM_SD_NOTIFY_REQ_CB,

                   &msm_buf_mngr_dev->vb2_ops);

函数实现在v4l2-device.h

static inline void v4l2_subdev_notify(struct v4l2_subdev *sd,

                                           unsigned int notification, void *arg)

{

         if (sd && sd->v4l2_dev && sd->v4l2_dev->notify)

                   sd->v4l2_dev->notify(sd, notification, arg);

}

其中sd->v4l2_dev是在msm_sd_register(&msm_buf_mngr_dev->subdev);中赋值的:

msm.cstatic inline int __msm_sd_register_subdev(struct v4l2_subdev *sd)

{

         vdev->v4l2_dev = msm_v4l2_dev;

}

所以sd->v4l2_devmsm_v4l2_dev。这个notify是在

static int msm_probe(struct platform_device *pdev)

{

         msm_v4l2_dev->notify = msm_sd_notify;

}

static void msm_sd_notify(struct v4l2_subdev *sd,

         unsigned int notification, void *arg)

{

         case MSM_SD_NOTIFY_REQ_CB: {

                   struct msm_sd_req_vb2_q *req_sd = arg;

                   rc = msm_vb2_request_cb(req_sd);

}msm_vb2.c

int msm_vb2_request_cb(struct msm_sd_req_vb2_q *req)

{

         if (!req) {

                   pr_err("%s: suddev is null\n", __func__);

                   return -EINVAL;

         }

         req->get_buf = msm_vb2_get_buf;

         req->get_buf_by_idx = msm_vb2_get_buf_by_idx;

         req->get_vb2_queue = msm_vb2_get_queue;

         req->put_buf = msm_vb2_put_buf;

         req->buf_done = msm_vb2_buf_done;

         req->flush_buf = msm_vb2_flush_buf;

         return 0;

}

所以最终msm_buf_mngr_dev->vb2_ops其实是被msm_vb2.c赋值的。

二:

static int32_t msm_buf_mngr_get_buf_by_idx(struct msm_buf_mngr_device *dev,

         void *argp)

{

         new_entry->vb2_buf = dev->vb2_ops.get_buf_by_idx(buf_info->session_id,

                   buf_info->stream_id, buf_info->index);

}

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多