瑞芯微Rockchip开发者社区
直播中

曹利娟

7年用户 954经验值
私信 关注
[问答]

media部件注册mipi csi怎么实现?

media部件注册mipi csi怎么实现?

回帖(1)

冯栋

2022-3-10 09:43:15
rv1126 架构如下



这里分析mipi csi

#define CSI2_SINK_PAD                        0
#define CSI2_NUM_SINK_PADS                1
#define CSI2_NUM_SRC_PADS                4
#define CSI2_NUM_PADS                        5
#define CSI2_NUM_PADS_SINGLE_LINK        2

static int csi2_probe(struct platform_device *pdev)
{
    ...
    csi2->sd.entity.ops = &csi2_entity_ops;
    ...
    csi2_media_init(&csi2->sd);
}

static int csi2_media_init(struct v4l2_subdev *sd)
{
        struct csi2_dev *csi2 = sd_to_dev(sd);
        int i = 0, num_pads = 0;


        /*
         * num_pads = 5
         */


        num_pads = csi2->match_data->num_pads;

        for (i = 0; i < num_pads; i++) {
                csi2->pad.flags = (i == CSI2_SINK_PAD) ?
                MEDIA_PAD_FL_SINK : MEDIA_PAD_FL_SOURCE;
        }

        csi2->pad[RK_CSI2X_PAD_SOURCE0].flags =
                MEDIA_PAD_FL_SOURCE | MEDIA_PAD_FL_MUST_CONNECT;
        csi2->pad[RK_CSI2_PAD_SINK].flags =
                MEDIA_PAD_FL_SINK | MEDIA_PAD_FL_MUST_CONNECT;
        ...

        return media_entity_pads_init(&sd->entity, num_pads, csi2->pad);
}
可以看到mipi csi entity有5个pad,1个sink pad,4个source pad

举报

更多回帖

发帖
×
20
完善资料,
赚取积分