aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--drivers/media/platform/exynos4-is/fimc-lite.c17
-rw-r--r--include/media/s5p_fimc.h2
2 files changed, 15 insertions, 4 deletions
diff --git a/drivers/media/platform/exynos4-is/fimc-lite.c b/drivers/media/platform/exynos4-is/fimc-lite.c
index 4fa2e05186bd..08fbfedea90f 100644
--- a/drivers/media/platform/exynos4-is/fimc-lite.c
+++ b/drivers/media/platform/exynos4-is/fimc-lite.c
@@ -44,6 +44,7 @@ static const struct fimc_fmt fimc_lite_formats[] = {
44 { 44 {
45 .name = "YUV 4:2:2 packed, YCbYCr", 45 .name = "YUV 4:2:2 packed, YCbYCr",
46 .fourcc = V4L2_PIX_FMT_YUYV, 46 .fourcc = V4L2_PIX_FMT_YUYV,
47 .colorspace = V4L2_COLORSPACE_JPEG,
47 .depth = { 16 }, 48 .depth = { 16 },
48 .color = FIMC_FMT_YCBYCR422, 49 .color = FIMC_FMT_YCBYCR422,
49 .memplanes = 1, 50 .memplanes = 1,
@@ -52,6 +53,7 @@ static const struct fimc_fmt fimc_lite_formats[] = {
52 }, { 53 }, {
53 .name = "YUV 4:2:2 packed, CbYCrY", 54 .name = "YUV 4:2:2 packed, CbYCrY",
54 .fourcc = V4L2_PIX_FMT_UYVY, 55 .fourcc = V4L2_PIX_FMT_UYVY,
56 .colorspace = V4L2_COLORSPACE_JPEG,
55 .depth = { 16 }, 57 .depth = { 16 },
56 .color = FIMC_FMT_CBYCRY422, 58 .color = FIMC_FMT_CBYCRY422,
57 .memplanes = 1, 59 .memplanes = 1,
@@ -60,6 +62,7 @@ static const struct fimc_fmt fimc_lite_formats[] = {
60 }, { 62 }, {
61 .name = "YUV 4:2:2 packed, CrYCbY", 63 .name = "YUV 4:2:2 packed, CrYCbY",
62 .fourcc = V4L2_PIX_FMT_VYUY, 64 .fourcc = V4L2_PIX_FMT_VYUY,
65 .colorspace = V4L2_COLORSPACE_JPEG,
63 .depth = { 16 }, 66 .depth = { 16 },
64 .color = FIMC_FMT_CRYCBY422, 67 .color = FIMC_FMT_CRYCBY422,
65 .memplanes = 1, 68 .memplanes = 1,
@@ -68,6 +71,7 @@ static const struct fimc_fmt fimc_lite_formats[] = {
68 }, { 71 }, {
69 .name = "YUV 4:2:2 packed, YCrYCb", 72 .name = "YUV 4:2:2 packed, YCrYCb",
70 .fourcc = V4L2_PIX_FMT_YVYU, 73 .fourcc = V4L2_PIX_FMT_YVYU,
74 .colorspace = V4L2_COLORSPACE_JPEG,
71 .depth = { 16 }, 75 .depth = { 16 },
72 .color = FIMC_FMT_YCRYCB422, 76 .color = FIMC_FMT_YCRYCB422,
73 .memplanes = 1, 77 .memplanes = 1,
@@ -76,6 +80,7 @@ static const struct fimc_fmt fimc_lite_formats[] = {
76 }, { 80 }, {
77 .name = "RAW8 (GRBG)", 81 .name = "RAW8 (GRBG)",
78 .fourcc = V4L2_PIX_FMT_SGRBG8, 82 .fourcc = V4L2_PIX_FMT_SGRBG8,
83 .colorspace = V4L2_COLORSPACE_SRGB,
79 .depth = { 8 }, 84 .depth = { 8 },
80 .color = FIMC_FMT_RAW8, 85 .color = FIMC_FMT_RAW8,
81 .memplanes = 1, 86 .memplanes = 1,
@@ -84,6 +89,7 @@ static const struct fimc_fmt fimc_lite_formats[] = {
84 }, { 89 }, {
85 .name = "RAW10 (GRBG)", 90 .name = "RAW10 (GRBG)",
86 .fourcc = V4L2_PIX_FMT_SGRBG10, 91 .fourcc = V4L2_PIX_FMT_SGRBG10,
92 .colorspace = V4L2_COLORSPACE_SRGB,
87 .depth = { 10 }, 93 .depth = { 10 },
88 .color = FIMC_FMT_RAW10, 94 .color = FIMC_FMT_RAW10,
89 .memplanes = 1, 95 .memplanes = 1,
@@ -92,6 +98,7 @@ static const struct fimc_fmt fimc_lite_formats[] = {
92 }, { 98 }, {
93 .name = "RAW12 (GRBG)", 99 .name = "RAW12 (GRBG)",
94 .fourcc = V4L2_PIX_FMT_SGRBG12, 100 .fourcc = V4L2_PIX_FMT_SGRBG12,
101 .colorspace = V4L2_COLORSPACE_SRGB,
95 .depth = { 12 }, 102 .depth = { 12 },
96 .color = FIMC_FMT_RAW12, 103 .color = FIMC_FMT_RAW12,
97 .memplanes = 1, 104 .memplanes = 1,
@@ -577,6 +584,7 @@ static const struct fimc_fmt *fimc_lite_subdev_try_fmt(struct fimc_lite *fimc,
577 if (WARN_ON(!fmt)) 584 if (WARN_ON(!fmt))
578 return NULL; 585 return NULL;
579 586
587 mf->colorspace = fmt->colorspace;
580 mf->code = fmt->mbus_code; 588 mf->code = fmt->mbus_code;
581 } else { 589 } else {
582 struct flite_frame *sink = &fimc->inp_frame; 590 struct flite_frame *sink = &fimc->inp_frame;
@@ -588,11 +596,13 @@ static const struct fimc_fmt *fimc_lite_subdev_try_fmt(struct fimc_lite *fimc,
588 FLITE_SD_PAD_SINK); 596 FLITE_SD_PAD_SINK);
589 597
590 mf->code = sink_fmt->code; 598 mf->code = sink_fmt->code;
599 mf->colorspace = sink_fmt->colorspace;
591 600
592 rect = v4l2_subdev_get_try_crop(fh, 601 rect = v4l2_subdev_get_try_crop(fh,
593 FLITE_SD_PAD_SINK); 602 FLITE_SD_PAD_SINK);
594 } else { 603 } else {
595 mf->code = sink->fmt->mbus_code; 604 mf->code = sink->fmt->mbus_code;
605 mf->colorspace = sink->fmt->colorspace;
596 rect = &sink->rect; 606 rect = &sink->rect;
597 } 607 }
598 608
@@ -696,7 +706,7 @@ static int fimc_lite_g_fmt_mplane(struct file *file, void *fh,
696 pixm->width = frame->f_width; 706 pixm->width = frame->f_width;
697 pixm->height = frame->f_height; 707 pixm->height = frame->f_height;
698 pixm->field = V4L2_FIELD_NONE; 708 pixm->field = V4L2_FIELD_NONE;
699 pixm->colorspace = V4L2_COLORSPACE_JPEG; 709 pixm->colorspace = fmt->colorspace;
700 return 0; 710 return 0;
701} 711}
702 712
@@ -739,7 +749,7 @@ static int fimc_lite_try_fmt(struct fimc_lite *fimc,
739 fmt->depth[0]) / 8; 749 fmt->depth[0]) / 8;
740 pixm->num_planes = fmt->memplanes; 750 pixm->num_planes = fmt->memplanes;
741 pixm->pixelformat = fmt->fourcc; 751 pixm->pixelformat = fmt->fourcc;
742 pixm->colorspace = V4L2_COLORSPACE_JPEG; 752 pixm->colorspace = fmt->colorspace;
743 pixm->field = V4L2_FIELD_NONE; 753 pixm->field = V4L2_FIELD_NONE;
744 return 0; 754 return 0;
745} 755}
@@ -1071,9 +1081,9 @@ static int fimc_lite_subdev_get_fmt(struct v4l2_subdev *sd,
1071 fmt->format = *mf; 1081 fmt->format = *mf;
1072 return 0; 1082 return 0;
1073 } 1083 }
1074 mf->colorspace = V4L2_COLORSPACE_JPEG;
1075 1084
1076 mutex_lock(&fimc->lock); 1085 mutex_lock(&fimc->lock);
1086 mf->colorspace = f->fmt->colorspace;
1077 mf->code = f->fmt->mbus_code; 1087 mf->code = f->fmt->mbus_code;
1078 1088
1079 if (fmt->pad == FLITE_SD_PAD_SINK) { 1089 if (fmt->pad == FLITE_SD_PAD_SINK) {
@@ -1102,7 +1112,6 @@ static int fimc_lite_subdev_set_fmt(struct v4l2_subdev *sd,
1102 v4l2_dbg(1, debug, sd, "pad%d: code: 0x%x, %dx%d\n", 1112 v4l2_dbg(1, debug, sd, "pad%d: code: 0x%x, %dx%d\n",
1103 fmt->pad, mf->code, mf->width, mf->height); 1113 fmt->pad, mf->code, mf->width, mf->height);
1104 1114
1105 mf->colorspace = V4L2_COLORSPACE_JPEG;
1106 mutex_lock(&fimc->lock); 1115 mutex_lock(&fimc->lock);
1107 1116
1108 if ((atomic_read(&fimc->out_path) == FIMC_IO_ISP && 1117 if ((atomic_read(&fimc->out_path) == FIMC_IO_ISP &&
diff --git a/include/media/s5p_fimc.h b/include/media/s5p_fimc.h
index 0afadb663bbd..b975c285c8a9 100644
--- a/include/media/s5p_fimc.h
+++ b/include/media/s5p_fimc.h
@@ -116,6 +116,7 @@ struct s5p_platform_fimc {
116 * @color: the driver's private color format id 116 * @color: the driver's private color format id
117 * @memplanes: number of physically non-contiguous data planes 117 * @memplanes: number of physically non-contiguous data planes
118 * @colplanes: number of physically contiguous data planes 118 * @colplanes: number of physically contiguous data planes
119 * @colorspace: v4l2 colorspace (V4L2_COLORSPACE_*)
119 * @depth: per plane driver's private 'number of bits per pixel' 120 * @depth: per plane driver's private 'number of bits per pixel'
120 * @mdataplanes: bitmask indicating meta data plane(s), (1 << plane_no) 121 * @mdataplanes: bitmask indicating meta data plane(s), (1 << plane_no)
121 * @flags: flags indicating which operation mode format applies to 122 * @flags: flags indicating which operation mode format applies to
@@ -127,6 +128,7 @@ struct fimc_fmt {
127 u32 color; 128 u32 color;
128 u16 memplanes; 129 u16 memplanes;
129 u16 colplanes; 130 u16 colplanes;
131 u8 colorspace;
130 u8 depth[FIMC_MAX_PLANES]; 132 u8 depth[FIMC_MAX_PLANES];
131 u16 mdataplanes; 133 u16 mdataplanes;
132 u16 flags; 134 u16 flags;