1238c84f7SMauro Carvalho Chehab // SPDX-License-Identifier: GPL-2.0-only 2238c84f7SMauro Carvalho Chehab /* 3238c84f7SMauro Carvalho Chehab * Samsung S5P/EXYNOS4 SoC Camera Subsystem driver 4238c84f7SMauro Carvalho Chehab * 5238c84f7SMauro Carvalho Chehab * Copyright (C) 2013 Samsung Electronics Co., Ltd. 6238c84f7SMauro Carvalho Chehab * Author: Sylwester Nawrocki <s.nawrocki@samsung.com> 7238c84f7SMauro Carvalho Chehab */ 8238c84f7SMauro Carvalho Chehab 9238c84f7SMauro Carvalho Chehab #include <linux/module.h> 10238c84f7SMauro Carvalho Chehab #include <media/drv-intf/exynos-fimc.h> 11238c84f7SMauro Carvalho Chehab #include "common.h" 12238c84f7SMauro Carvalho Chehab 13238c84f7SMauro Carvalho Chehab /* 14238c84f7SMauro Carvalho Chehab * Called with the media graph mutex held or media_entity_is_streaming(entity) 15238c84f7SMauro Carvalho Chehab * true. 16238c84f7SMauro Carvalho Chehab */ fimc_find_remote_sensor(struct media_entity * entity)17238c84f7SMauro Carvalho Chehabstruct v4l2_subdev *fimc_find_remote_sensor(struct media_entity *entity) 18238c84f7SMauro Carvalho Chehab { 19238c84f7SMauro Carvalho Chehab struct media_pad *pad = &entity->pads[0]; 20238c84f7SMauro Carvalho Chehab struct v4l2_subdev *sd; 21238c84f7SMauro Carvalho Chehab 22238c84f7SMauro Carvalho Chehab while (pad->flags & MEDIA_PAD_FL_SINK) { 23238c84f7SMauro Carvalho Chehab /* source pad */ 24*b2e44430SLaurent Pinchart pad = media_pad_remote_pad_first(pad); 25238c84f7SMauro Carvalho Chehab if (!pad || !is_media_entity_v4l2_subdev(pad->entity)) 26238c84f7SMauro Carvalho Chehab break; 27238c84f7SMauro Carvalho Chehab 28238c84f7SMauro Carvalho Chehab sd = media_entity_to_v4l2_subdev(pad->entity); 29238c84f7SMauro Carvalho Chehab 30238c84f7SMauro Carvalho Chehab if (sd->grp_id == GRP_ID_FIMC_IS_SENSOR || 31238c84f7SMauro Carvalho Chehab sd->grp_id == GRP_ID_SENSOR) 32238c84f7SMauro Carvalho Chehab return sd; 33238c84f7SMauro Carvalho Chehab /* sink pad */ 34238c84f7SMauro Carvalho Chehab pad = &sd->entity.pads[0]; 35238c84f7SMauro Carvalho Chehab } 36238c84f7SMauro Carvalho Chehab return NULL; 37238c84f7SMauro Carvalho Chehab } 38238c84f7SMauro Carvalho Chehab EXPORT_SYMBOL(fimc_find_remote_sensor); 39238c84f7SMauro Carvalho Chehab __fimc_vidioc_querycap(struct device * dev,struct v4l2_capability * cap)40238c84f7SMauro Carvalho Chehabvoid __fimc_vidioc_querycap(struct device *dev, struct v4l2_capability *cap) 41238c84f7SMauro Carvalho Chehab { 42238c84f7SMauro Carvalho Chehab strscpy(cap->driver, dev->driver->name, sizeof(cap->driver)); 43238c84f7SMauro Carvalho Chehab strscpy(cap->card, dev->driver->name, sizeof(cap->card)); 44238c84f7SMauro Carvalho Chehab } 45238c84f7SMauro Carvalho Chehab EXPORT_SYMBOL(__fimc_vidioc_querycap); 46238c84f7SMauro Carvalho Chehab 47238c84f7SMauro Carvalho Chehab MODULE_LICENSE("GPL"); 48