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

杨万富

7年用户 1492经验值
擅长:526774
私信 关注
[问答]

请问一下mipi csi phy与imx291是怎样连接的

请问一下mipi csi phy与imx291是怎样连接的?bound函数该怎样去编写呢?

回帖(1)

李蒙娜

2022-2-21 09:14:05
二,mipi csi phy与imx291

同样的还是直接贴出bound函数

static int
rockchip_mipidphy_notifier_bound(struct v4l2_async_notifier *notifier,
                                 struct v4l2_subdev *sd,
                                 struct v4l2_async_subdev *asd)
{
        struct mipidphy_priv *priv = container_of(notifier,
                                                  struct mipidphy_priv,
                                                  notifier);
        struct sensor_async_subdev *s_asd = container_of(asd,
                                        struct sensor_async_subdev, asd);
        struct mipidphy_sensor *sensor;
        unsigned int pad, ret;

        if (priv->num_sensors == ARRAY_SIZE(priv->sensors))
                return -EBUSY;

        sensor = &priv->sensors[priv->num_sensors++];
        sensor->lanes = s_asd->lanes;
        sensor->mbus = s_asd->mbus;

        /*
         * 这里的sd是imx291的subdev
         */

        sensor->sd = sd;
        dev_info(priv->dev, "match %s:bus type %dn", sd->name, s_asd->mbus.type);

        
        /*
         * imx291只有一个source pad
         */

        for (pad = 0; pad < sensor->sd->entity.num_pads; pad++)
                if (sensor->sd->entity.pads[pad].flags & MEDIA_PAD_FL_SOURCE)
                        break;

        if (pad == sensor->sd->entity.num_pads) {
                dev_err(priv->dev,
                        "failed to find src pad for %sn",
                        sensor->sd->name);

                return -ENXIO;
        }

        /*
         * 下面的函数看下面文章,有具体分析,代入当前条件分析
         * 基于RV1126平台imx291分析 --- media部件连接 二
         *
         */

        ret = media_create_pad_link(
                        &sensor->sd->entity, pad,
                        &priv->sd.entity, MIPI_DPHY_RX_PAD_SINK,
                        priv->num_sensors != 1 ? 0 : MEDIA_LNK_FL_ENABLED);
        if (ret) {
                dev_err(priv->dev,
                        "failed to create link for %sn",
                        sensor->sd->name);
                return ret;
        }

        return 0;
}
最后的连接情况如下:
举报

更多回帖

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