Probe函数及注册media entity、v4l2 subdev

Probe函数中,首先对DTS进行解析,获取clk、regulator、gpio等信息用以对sensor上下电。其次注册v4l2 controller、media entity、v4l2 subdev。注意到v4l2 subdev的注册是异步。以下代码块为函数调用信息。
ret = imx219_init_controls(imx219);
        if (ret)
                goto error_power_off;

        /* Initialize subdev */
        imx219->sd.internal_ops = &imx219_internal_ops;
        imx219->sd.flags |= V4L2_SUBDEV_FL_HAS_DEVNODE | V4L2_SUBDEV_FL_HAS_EVENTS;
        imx219->sd.entity.function = MEDIA_ENT_F_CAM_SENSOR;

        /* Initialize source pad */
        imx219->pad.flags = MEDIA_PAD_FL_SOURCE;

        /* Initialize default format */
        imx219_set_default_format(imx219);

        ret = media_entity_pads_init(&imx219->sd.entity, 1, &imx219->pad);
        if (ret) {
                dev_err(dev, "failed to init entity pads: %d\n", ret);
                goto error_handler_free;
        }

        ret = v4l2_async_register_subdev_sensor(&imx219->sd);
        if (ret < 0) {
                dev_err(dev, "failed to register sensor sub-device: %d\n", ret);
                goto error_media_entity;
        }