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 */
446 * For FIMC-IS handled sensors, that are placed under i2c-isp device in fimc_md_parse_one_endpoint()
447 * node, FIMC is connected to the FIMC-IS through its ISP Writeback in fimc_md_parse_one_endpoint()
448 * input. Sensors are attached to the FIMC-LITE hostdata interface in fimc_md_parse_one_endpoint()
506 * Runtime resume one of the FIMC entities to make sure in fimc_md_register_sensor_entities()
575 * MIPI-CSIS, FIMC and FIMC-LITE platform devices registration.
601 v4l2_err(&fmd->v4l2_dev, "Failed to register FIMC.LITE%d\n", in register_fimc_lite_entity()
606 static int register_fimc_entity(struct fimc_md *fmd, struct fimc_dev *fimc) in register_fimc_entity() argument
612 if (WARN_ON(fimc->id >= FIMC_MAX_DEVS || fmd->fimc[fimc->id])) in register_fimc_entity()
615 sd = &fimc->vid_cap.subdev; in register_fimc_entity()
626 if (!fmd->pmf && fimc->pdev) in register_fimc_entity()
627 fmd->pmf = &fimc->pdev->dev; in register_fimc_entity()
628 fmd->fimc[fimc->id] = fimc; in register_fimc_entity()
629 fimc->vid_cap.user_subdev_api = fmd->user_subdev_api; in register_fimc_entity()
631 v4l2_err(&fmd->v4l2_dev, "Failed to register FIMC.%d (%d)\n", in register_fimc_entity()
632 fimc->id, ret); in register_fimc_entity()
678 "Failed to register FIMC-ISP (%d)\n", ret); in register_fimc_is_entity()
733 /* Register FIMC, FIMC-LITE and CSIS media entities */
777 struct fimc_dev *dev = fmd->fimc[i]; in fimc_md_unregister_entities()
782 fmd->fimc[i] = NULL; in fimc_md_unregister_entities()
806 * __fimc_md_create_fimc_links - create links to all FIMC entities
807 * @fmd: fimc media device
808 * @source: the source entity to create links to all fimc entities from
809 * @sensor: sensor subdev linked to FIMC[fimc_id] entity, may be null
811 * @link_mask: bitmask of the fimc devices for which link should be enabled
825 /* Skip direct FIMC links in the logical FIMC-IS sensor path */ in __fimc_md_create_fimc_sink_links()
831 if (!fmd->fimc[i]) in __fimc_md_create_fimc_sink_links()
834 * Some FIMC variants are not fitted with camera capture in __fimc_md_create_fimc_sink_links()
837 if (!fmd->fimc[i]->variant->has_cam_if) in __fimc_md_create_fimc_sink_links()
842 sink = &fmd->fimc[i]->vid_cap.subdev.entity; in __fimc_md_create_fimc_sink_links()
848 /* Notify FIMC capture subdev entity */ in __fimc_md_create_fimc_sink_links()
868 /* Notify FIMC-LITE subdev entity */ in __fimc_md_create_fimc_sink_links()
880 /* Create links from FIMC-LITE source pads to other entities */
887 struct fimc_lite *fimc = fmd->fimc_lite[i]; in __fimc_md_create_flite_source_links() local
889 if (fimc == NULL) in __fimc_md_create_flite_source_links()
892 source = &fimc->subdev.entity; in __fimc_md_create_flite_source_links()
893 sink = &fimc->ve.vdev.entity; in __fimc_md_create_flite_source_links()
894 /* FIMC-LITE's subdev and video node */ in __fimc_md_create_flite_source_links()
899 /* Link from FIMC-LITE to IS-ISP subdev */ in __fimc_md_create_flite_source_links()
910 /* Create FIMC-IS links */
920 if (fmd->fimc[i] == NULL) in __fimc_md_create_fimc_is_links()
923 /* Link from FIMC-IS-ISP subdev to FIMC */ in __fimc_md_create_fimc_is_links()
924 sink = &fmd->fimc[i]->vid_cap.subdev.entity; in __fimc_md_create_fimc_is_links()
931 /* Link from FIMC-IS-ISP subdev to fimc-is-isp.capture video node */ in __fimc_md_create_fimc_is_links()
934 /* Skip this link if the fimc-is-isp video node driver isn't built-in */ in __fimc_md_create_fimc_is_links()
944 * @fmd: fimc media device
946 * Parallel interface sensor entities are connected directly to FIMC capture
949 * entity has a link to each registered FIMC capture entity. Enabled links
951 * subsequent FIMC capture entity. The number of default active links is
952 * determined by the number of available sensors or FIMC entities,
1032 /* Create immutable links between each FIMC's subdev and video node */ in fimc_md_create_links()
1035 if (!fmd->fimc[i]) in fimc_md_create_links()
1038 source = &fmd->fimc[i]->vid_cap.subdev.entity; in fimc_md_create_links()
1039 sink = &fmd->fimc[i]->vid_cap.ve.vdev.entity; in fimc_md_create_links()
1266 if (fmd->fimc[i]) in fimc_md_sysfs_store()
1267 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",
1602 MODULE_DESCRIPTION("S5P FIMC camera host interface/video postprocessor driver");