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; }