Hi, Brayn
Sorry for the format of my email. I subscribe the linux-media maillist but
I didn't find your email in my mailbox even. I don't know why some emails are
missed.
anyway, Some comments for your patch.
> [snip]
> ... ...
> +static void scan_of_host(struct soc_camera_host *ici)
> +{
> + struct soc_camera_of_client *sofc;
> + struct soc_camera_async_client *sasc;
> + struct v4l2_async_subdev *asd;
> + struct soc_camera_device *icd;
> + struct device_node *node = NULL;
> +
> + for (;;) {
> + int ret;
> +
> + node = v4l2_of_get_next_endpoint(ici->v4l2_dev.dev->of_node,
> + node);
> + if (!node)
> + break;
> +
> + sofc = soc_camera_of_alloc_client(ici, node);
> + if (!sofc) {
> + dev_err(ici->v4l2_dev.dev,
> + "%s(): failed to create a client device\n",
> + __func__);
> + of_node_put(node);
> + break;
> + }
> + v4l2_of_parse_endpoint(node, &sofc->node);
> +
> + sasc = &sofc->sasc;
> + ret = platform_device_add(sasc->pdev);
> + if (ret < 0) {
> + /* Useless thing, but keep trying */
> + platform_device_put(sasc->pdev);
> + of_node_put(node);
> + continue;
> + }
> +
> + /* soc_camera_pdrv_probe() probed successfully */
> + icd = platform_get_drvdata(sasc->pdev);
> + if (!icd) {
> + /* Cannot be... */
> + platform_device_put(sasc->pdev);
> + of_node_put(node);
> + continue;
> + }
> +
> + asd = sasc->sensor;
> + asd->match_type = V4L2_ASYNC_MATCH_OF;
> + asd->match.of.node = sofc->link_node;
> +
> + sasc->notifier.subdevs = &asd;
> + sasc->notifier.num_subdevs = 1;
> + sasc->notifier.bound = soc_camera_async_bound;
> + sasc->notifier.unbind = soc_camera_async_unbind;
> + sasc->notifier.complete = soc_camera_async_complete;
> +
> + icd->parent = ici->v4l2_dev.dev;
Before register the notifier, you need also register a "mclk" v4l2 clock.
This clock is needed when the soc-camera i2c sensor driver is probed. Otherwise
the
sensor will always defer the probe and can not probe.
Best Regards,
Josh Wu
> +
> + ret = v4l2_async_notifier_register(&ici->v4l2_dev,
> &sasc->notifier);
> + if (!ret)
> + break;
> +
> + /*
> + * We could destroy the icd in there error case here, but the
> + * non-OF version doesn't do that, so, we can keep it around
> too
> + */
> + }
> +}
> [snip]
--
To unsubscribe from this list: send the line "unsubscribe linux-tegra" in
the body of a message to [email protected]
More majordomo info at http://vger.kernel.org/majordomo-info.html