Lines Matching defs:rkisp1

23 #include "rkisp1-common.h"
24 #include "rkisp1-csi.h"
41 * rkisp1-resizer.c rkisp1-capture.c
43 * rkisp1-isp.c Main Picture Path
61 * rkisp1-stats.c rkisp1-params.c
129 struct rkisp1_device *rkisp1 =
141 dev_err(rkisp1->dev, "failed to find source pad for %s\n",
147 return rkisp1_csi_link_sensor(rkisp1, sd, s_asd, source_pad);
150 &rkisp1->isp.sd.entity,
154 dev_err(rkisp1->dev, "failed to link source pad of %s\n",
164 struct rkisp1_device *rkisp1 =
167 return v4l2_device_register_subdev_nodes(&rkisp1->v4l2_dev);
184 static int rkisp1_subdev_notifier_register(struct rkisp1_device *rkisp1)
186 struct v4l2_async_notifier *ntf = &rkisp1->notifier;
187 struct fwnode_handle *fwnode = dev_fwnode(rkisp1->dev);
192 v4l2_async_nf_init(ntf, &rkisp1->v4l2_dev);
211 if (!rkisp1_has_feature(rkisp1, MIPI_CSI2)) {
212 dev_err(rkisp1->dev,
234 dev_err(rkisp1->dev, "failed to parse endpoint %pfw\n",
242 dev_err(rkisp1->dev,
252 dev_err(rkisp1->dev,
279 dev_dbg(rkisp1->dev, "registered ep id %d, bus type %u, %u lanes\n",
290 dev_dbg(rkisp1->dev, "no remote subdevice found\n");
307 struct rkisp1_device *rkisp1 = dev_get_drvdata(dev);
309 rkisp1->irqs_enabled = false;
318 for (unsigned int il = 0; il < ARRAY_SIZE(rkisp1->irqs); ++il) {
319 if (rkisp1->irqs[il] == -1)
323 if (il == 0 || rkisp1->irqs[il - 1] != rkisp1->irqs[il])
324 synchronize_irq(rkisp1->irqs[il]);
327 clk_bulk_disable_unprepare(rkisp1->clk_size, rkisp1->clks);
333 struct rkisp1_device *rkisp1 = dev_get_drvdata(dev);
339 ret = clk_bulk_prepare_enable(rkisp1->clk_size, rkisp1->clks);
343 rkisp1->irqs_enabled = true;
360 static int rkisp1_create_links(struct rkisp1_device *rkisp1)
362 unsigned int dev_count = rkisp1_path_count(rkisp1);
366 if (rkisp1_has_feature(rkisp1, MIPI_CSI2)) {
368 ret = media_create_pad_link(&rkisp1->csi.sd.entity,
370 &rkisp1->isp.sd.entity,
380 &rkisp1->resizer_devs[i].sd.entity;
382 &rkisp1->capture_devs[i].vnode.vdev.entity;
384 ret = media_create_pad_link(&rkisp1->isp.sd.entity,
400 ret = media_create_pad_link(&rkisp1->params.vnode.vdev.entity, 0,
401 &rkisp1->isp.sd.entity,
409 return media_create_pad_link(&rkisp1->isp.sd.entity,
411 &rkisp1->stats.vnode.vdev.entity, 0,
416 static void rkisp1_entities_unregister(struct rkisp1_device *rkisp1)
418 if (rkisp1_has_feature(rkisp1, MIPI_CSI2))
419 rkisp1_csi_unregister(rkisp1);
420 rkisp1_params_unregister(rkisp1);
421 rkisp1_stats_unregister(rkisp1);
422 rkisp1_capture_devs_unregister(rkisp1);
423 rkisp1_resizer_devs_unregister(rkisp1);
424 rkisp1_isp_unregister(rkisp1);
427 static int rkisp1_entities_register(struct rkisp1_device *rkisp1)
431 ret = rkisp1_isp_register(rkisp1);
435 ret = rkisp1_resizer_devs_register(rkisp1);
439 ret = rkisp1_capture_devs_register(rkisp1);
443 ret = rkisp1_stats_register(rkisp1);
447 ret = rkisp1_params_register(rkisp1);
451 if (rkisp1_has_feature(rkisp1, MIPI_CSI2)) {
452 ret = rkisp1_csi_register(rkisp1);
457 ret = rkisp1_create_links(rkisp1);
464 rkisp1_entities_unregister(rkisp1);
577 struct rkisp1_device *rkisp1;
584 rkisp1 = devm_kzalloc(dev, sizeof(*rkisp1), GFP_KERNEL);
585 if (!rkisp1)
589 rkisp1->info = info;
591 dev_set_drvdata(dev, rkisp1);
592 rkisp1->dev = dev;
594 dma_mask = rkisp1_has_feature(rkisp1, DMA_34BIT) ? DMA_BIT_MASK(34) :
601 mutex_init(&rkisp1->stream_lock);
603 rkisp1->base_addr = devm_platform_ioremap_resource(pdev, 0);
604 if (IS_ERR(rkisp1->base_addr))
605 return PTR_ERR(rkisp1->base_addr);
607 for (unsigned int il = 0; il < ARRAY_SIZE(rkisp1->irqs); ++il)
608 rkisp1->irqs[il] = -1;
617 for (unsigned int il = 0; il < ARRAY_SIZE(rkisp1->irqs); ++il) {
619 rkisp1->irqs[il] = irq;
631 rkisp1->clks[i].id = info->clks[i];
632 ret = devm_clk_bulk_get(dev, info->clk_size, rkisp1->clks);
635 rkisp1->clk_size = info->clk_size;
640 rkisp1->gasket = syscon_regmap_lookup_by_phandle_args(dev->of_node,
643 if (IS_ERR(rkisp1->gasket)) {
644 ret = PTR_ERR(rkisp1->gasket);
649 rkisp1->gasket_id = id;
658 cif_id = rkisp1_read(rkisp1, RKISP1_CIF_VI_ID);
659 dev_dbg(rkisp1->dev, "CIF_ID 0x%08x\n", cif_id);
663 rkisp1->media_dev.hw_revision = info->isp_ver;
664 strscpy(rkisp1->media_dev.model, RKISP1_DRIVER_NAME,
665 sizeof(rkisp1->media_dev.model));
666 rkisp1->media_dev.dev = &pdev->dev;
667 strscpy(rkisp1->media_dev.bus_info, RKISP1_BUS_INFO,
668 sizeof(rkisp1->media_dev.bus_info));
669 media_device_init(&rkisp1->media_dev);
671 v4l2_dev = &rkisp1->v4l2_dev;
672 v4l2_dev->mdev = &rkisp1->media_dev;
675 ret = v4l2_device_register(rkisp1->dev, &rkisp1->v4l2_dev);
679 ret = media_device_register(&rkisp1->media_dev);
685 if (rkisp1->info->features & RKISP1_FEATURE_MIPI_CSI2) {
686 ret = rkisp1_csi_init(rkisp1);
691 ret = rkisp1_entities_register(rkisp1);
695 ret = rkisp1_subdev_notifier_register(rkisp1);
699 rkisp1_debug_init(rkisp1);
704 rkisp1_entities_unregister(rkisp1);
706 if (rkisp1_has_feature(rkisp1, MIPI_CSI2))
707 rkisp1_csi_cleanup(rkisp1);
709 media_device_unregister(&rkisp1->media_dev);
711 v4l2_device_unregister(&rkisp1->v4l2_dev);
713 media_device_cleanup(&rkisp1->media_dev);
721 struct rkisp1_device *rkisp1 = platform_get_drvdata(pdev);
723 v4l2_async_nf_unregister(&rkisp1->notifier);
724 v4l2_async_nf_cleanup(&rkisp1->notifier);
726 rkisp1_entities_unregister(rkisp1);
727 if (rkisp1_has_feature(rkisp1, MIPI_CSI2))
728 rkisp1_csi_cleanup(rkisp1);
729 rkisp1_debug_cleanup(rkisp1);
731 media_device_unregister(&rkisp1->media_dev);
732 v4l2_device_unregister(&rkisp1->v4l2_dev);
734 media_device_cleanup(&rkisp1->media_dev);