|
@@ -32,6 +32,7 @@
|
|
|
#include <media/videobuf2-dma-contig.h>
|
|
|
#include <media/s5p_fimc.h>
|
|
|
|
|
|
+#include "common.h"
|
|
|
#include "fimc-core.h"
|
|
|
#include "fimc-lite.h"
|
|
|
#include "fimc-lite-reg.h"
|
|
@@ -131,30 +132,6 @@ static const struct fimc_fmt *fimc_lite_find_format(const u32 *pixelformat,
|
|
|
return def_fmt;
|
|
|
}
|
|
|
|
|
|
-/* Called with the media graph mutex held or @me stream_count > 0. */
|
|
|
-static struct v4l2_subdev *__find_remote_sensor(struct media_entity *me)
|
|
|
-{
|
|
|
- struct media_pad *pad = &me->pads[0];
|
|
|
- struct v4l2_subdev *sd;
|
|
|
-
|
|
|
- while (pad->flags & MEDIA_PAD_FL_SINK) {
|
|
|
- /* source pad */
|
|
|
- pad = media_entity_remote_pad(pad);
|
|
|
- if (pad == NULL ||
|
|
|
- media_entity_type(pad->entity) != MEDIA_ENT_T_V4L2_SUBDEV)
|
|
|
- break;
|
|
|
-
|
|
|
- sd = media_entity_to_v4l2_subdev(pad->entity);
|
|
|
-
|
|
|
- if (sd->grp_id == GRP_ID_FIMC_IS_SENSOR ||
|
|
|
- sd->grp_id == GRP_ID_SENSOR)
|
|
|
- return sd;
|
|
|
- /* sink pad */
|
|
|
- pad = &sd->entity.pads[0];
|
|
|
- }
|
|
|
- return NULL;
|
|
|
-}
|
|
|
-
|
|
|
static int fimc_lite_hw_init(struct fimc_lite *fimc, bool isp_output)
|
|
|
{
|
|
|
struct fimc_source_info *si;
|
|
@@ -830,7 +807,7 @@ static int fimc_lite_streamon(struct file *file, void *priv,
|
|
|
if (ret < 0)
|
|
|
goto err_p_stop;
|
|
|
|
|
|
- fimc->sensor = __find_remote_sensor(&fimc->subdev.entity);
|
|
|
+ fimc->sensor = fimc_find_remote_sensor(&fimc->subdev.entity);
|
|
|
|
|
|
ret = vb2_ioctl_streamon(file, priv, type);
|
|
|
if (!ret) {
|
|
@@ -1212,7 +1189,7 @@ static int fimc_lite_subdev_s_stream(struct v4l2_subdev *sd, int on)
|
|
|
* The pipeline links are protected through entity.stream_count
|
|
|
* so there is no need to take the media graph mutex here.
|
|
|
*/
|
|
|
- fimc->sensor = __find_remote_sensor(&sd->entity);
|
|
|
+ fimc->sensor = fimc_find_remote_sensor(&sd->entity);
|
|
|
|
|
|
if (atomic_read(&fimc->out_path) != FIMC_IO_ISP)
|
|
|
return -ENOIOCTLCMD;
|