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-media" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html