Lines Matching full:fimc
31 #include <media/drv-intf/exynos-fimc.h>
34 #include "fimc-core.h"
35 #include "fimc-is.h"
36 #include "fimc-lite.h"
39 /* Set up image sensor subdev -> FIMC capture node notifications. */
60 * @p: fimc pipeline
152 * @p: fimc device terminating the pipeline
190 * @fmd: fimc media device
200 /* Enable PXLASYNC clock if this pipeline includes FIMC-IS */ in __fimc_pipeline_enable()
220 * @ep: fimc device terminating the pipeline
254 * @ep: fimc device terminating the pipeline
274 /* Disable PXLASYNC clock if this pipeline includes FIMC-IS */ in __fimc_pipeline_close()
305 * If neither CSIS nor FIMC was set up, in __fimc_pipeline_s_stream()
365 /* Media pipeline operations for the FIMC/FIMC-LITE video device driver */
445 * For FIMC-IS handled sensors, that are placed under i2c-isp device in fimc_md_parse_one_endpoint()
446 * node, FIMC is connected to the FIMC-IS through its ISP Writeback in fimc_md_parse_one_endpoint()
447 * input. Sensors are attached to the FIMC-LITE hostdata interface in fimc_md_parse_one_endpoint()
505 * Runtime resume one of the FIMC entities to make sure in fimc_md_register_sensor_entities()
574 * MIPI-CSIS, FIMC and FIMC-LITE platform devices registration.
600 v4l2_err(&fmd->v4l2_dev, "Failed to register FIMC.LITE%d\n", in register_fimc_lite_entity()
605 static int register_fimc_entity(struct fimc_md *fmd, struct fimc_dev *fimc) in register_fimc_entity() argument
611 if (WARN_ON(fimc->id >= FIMC_MAX_DEVS || fmd->fimc[fimc->id])) in register_fimc_entity()
614 sd = &fimc->vid_cap.subdev; in register_fimc_entity()
625 if (!fmd->pmf && fimc->pdev) in register_fimc_entity()
626 fmd->pmf = &fimc->pdev->dev; in register_fimc_entity()
627 fmd->fimc[fimc->id] = fimc; in register_fimc_entity()
628 fimc->vid_cap.user_subdev_api = fmd->user_subdev_api; in register_fimc_entity()
630 v4l2_err(&fmd->v4l2_dev, "Failed to register FIMC.%d (%d)\n", in register_fimc_entity()
631 fimc->id, ret); in register_fimc_entity()
677 "Failed to register FIMC-ISP (%d)\n", ret); in register_fimc_is_entity()
732 /* Register FIMC, FIMC-LITE and CSIS media entities */
776 struct fimc_dev *dev = fmd->fimc[i]; in fimc_md_unregister_entities()
781 fmd->fimc[i] = NULL; in fimc_md_unregister_entities()
805 * __fimc_md_create_fimc_links - create links to all FIMC entities
806 * @fmd: fimc media device
807 * @source: the source entity to create links to all fimc entities from
808 * @sensor: sensor subdev linked to FIMC[fimc_id] entity, may be null
810 * @link_mask: bitmask of the fimc devices for which link should be enabled
824 /* Skip direct FIMC links in the logical FIMC-IS sensor path */ in __fimc_md_create_fimc_sink_links()
830 if (!fmd->fimc[i]) in __fimc_md_create_fimc_sink_links()
833 * Some FIMC variants are not fitted with camera capture in __fimc_md_create_fimc_sink_links()
836 if (!fmd->fimc[i]->variant->has_cam_if) in __fimc_md_create_fimc_sink_links()
841 sink = &fmd->fimc[i]->vid_cap.subdev.entity; in __fimc_md_create_fimc_sink_links()
847 /* Notify FIMC capture subdev entity */ in __fimc_md_create_fimc_sink_links()
867 /* Notify FIMC-LITE subdev entity */ in __fimc_md_create_fimc_sink_links()
879 /* Create links from FIMC-LITE source pads to other entities */
886 struct fimc_lite *fimc = fmd->fimc_lite[i]; in __fimc_md_create_flite_source_links() local
888 if (fimc == NULL) in __fimc_md_create_flite_source_links()
891 source = &fimc->subdev.entity; in __fimc_md_create_flite_source_links()
892 sink = &fimc->ve.vdev.entity; in __fimc_md_create_flite_source_links()
893 /* FIMC-LITE's subdev and video node */ in __fimc_md_create_flite_source_links()
898 /* Link from FIMC-LITE to IS-ISP subdev */ in __fimc_md_create_flite_source_links()
909 /* Create FIMC-IS links */
919 if (fmd->fimc[i] == NULL) in __fimc_md_create_fimc_is_links()
922 /* Link from FIMC-IS-ISP subdev to FIMC */ in __fimc_md_create_fimc_is_links()
923 sink = &fmd->fimc[i]->vid_cap.subdev.entity; in __fimc_md_create_fimc_is_links()
930 /* Link from FIMC-IS-ISP subdev to fimc-is-isp.capture video node */ in __fimc_md_create_fimc_is_links()
933 /* Skip this link if the fimc-is-isp video node driver isn't built-in */ in __fimc_md_create_fimc_is_links()
943 * @fmd: fimc media device
945 * Parallel interface sensor entities are connected directly to FIMC capture
948 * entity has a link to each registered FIMC capture entity. Enabled links
950 * subsequent FIMC capture entity. The number of default active links is
951 * determined by the number of available sensors or FIMC entities,
1031 /* Create immutable links between each FIMC's subdev and video node */ in fimc_md_create_links()
1034 if (!fmd->fimc[i]) in fimc_md_create_links()
1037 source = &fmd->fimc[i]->vid_cap.subdev.entity; in fimc_md_create_links()
1038 sink = &fmd->fimc[i]->vid_cap.ve.vdev.entity; in fimc_md_create_links()
1265 if (fmd->fimc[i]) in fimc_md_sysfs_store()
1266 fmd->fimc[i]->vid_cap.user_subdev_api = subdev_api; in fimc_md_sysfs_store()
1445 strscpy(fmd->media_dev.model, "Samsung S5P FIMC", in fimc_md_probe()
1453 strscpy(v4l2_dev->name, "s5p-fimc-md", sizeof(v4l2_dev->name)); in fimc_md_probe()
1494 * FIMC platform devices need to be registered before the sclk_cam in fimc_md_probe()
1556 { .name = "s5p-fimc-md" },
1562 { .compatible = "samsung,fimc" },
1572 .name = "s5p-fimc-md",
1598 MODULE_DESCRIPTION("S5P FIMC camera host interface/video postprocessor driver");