Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 620ad697 authored by Harsh Shah's avatar Harsh Shah
Browse files

msm: camera: isp: Add support for 10 & 12 bit Y only formats



Raw format for mono sensors are to be supported using Y10 and Y12 V4L2
formats. Add the corresponding case for calculation of words per line,
plane info.

CRs-Fixed: 993405
Change-Id: Idbde696fba3636640f7f2af208d0e3b23cf2013a
Signed-off-by: default avatarHarsh Shah <harshs@codeaurora.org>
parent 80f8814a
Loading
Loading
Loading
Loading
+5 −1
Original line number Diff line number Diff line
@@ -177,6 +177,8 @@ int msm_isp_validate_axi_request(struct msm_vfe_axi_shared_data *axi_data,
	case V4L2_PIX_FMT_JPEG:
	case V4L2_PIX_FMT_META:
	case V4L2_PIX_FMT_GREY:
	case V4L2_PIX_FMT_Y10:
	case V4L2_PIX_FMT_Y12:
		stream_info->num_planes = 1;
		stream_info->format_factor = ISP_Q2;
		break;
@@ -261,6 +263,8 @@ static uint32_t msm_isp_axi_get_plane_size(
	case V4L2_PIX_FMT_JPEG:
	case V4L2_PIX_FMT_META:
	case V4L2_PIX_FMT_GREY:
	case V4L2_PIX_FMT_Y10:
	case V4L2_PIX_FMT_Y12:
		size = plane_cfg[plane_idx].output_height *
		plane_cfg[plane_idx].output_width;
		break;
@@ -1530,6 +1534,7 @@ static struct msm_isp_buffer *msm_isp_get_stream_buffer(
				bufq_handle, buf->buf_idx);
		buf = NULL;
	}

	return buf;
}

@@ -1552,7 +1557,6 @@ static int msm_isp_cfg_ping_pong_address(struct vfe_device *vfe_dev,
		pr_err("%s: Invalid stream_idx", __func__);
		return -EINVAL;
	}

	/* make sure that streams are in right state */
	if ((stream_info->stream_src < RDI_INTF_0) &&
		vfe_dev->is_split) {
+6 −1
Original line number Diff line number Diff line
@@ -1601,19 +1601,20 @@ int msm_isp_cal_word_per_line(uint32_t output_format,
	case V4L2_PIX_FMT_QRGGB8:
	case V4L2_PIX_FMT_JPEG:
	case V4L2_PIX_FMT_META:
	case V4L2_PIX_FMT_GREY:
		val = CAL_WORD(pixel_per_line, 1, 8);
		break;
	case V4L2_PIX_FMT_SBGGR10:
	case V4L2_PIX_FMT_SGBRG10:
	case V4L2_PIX_FMT_SGRBG10:
	case V4L2_PIX_FMT_SRGGB10:
	case V4L2_PIX_FMT_Y10:
		val = CAL_WORD(pixel_per_line, 5, 32);
		break;
	case V4L2_PIX_FMT_SBGGR12:
	case V4L2_PIX_FMT_SGBRG12:
	case V4L2_PIX_FMT_SGRBG12:
	case V4L2_PIX_FMT_SRGGB12:
	case V4L2_PIX_FMT_Y12:
		val = CAL_WORD(pixel_per_line, 3, 16);
		break;
	case V4L2_PIX_FMT_SBGGR14:
@@ -1646,6 +1647,7 @@ int msm_isp_cal_word_per_line(uint32_t output_format,
	case V4L2_PIX_FMT_NV41:
	case V4L2_PIX_FMT_NV16:
	case V4L2_PIX_FMT_NV61:
	case V4L2_PIX_FMT_GREY:
		val = CAL_WORD(pixel_per_line, 1, 8);
		break;
	case V4L2_PIX_FMT_YUYV:
@@ -1691,6 +1693,9 @@ enum msm_isp_pack_fmt msm_isp_get_pack_format(uint32_t output_format)
	case V4L2_PIX_FMT_SGBRG14:
	case V4L2_PIX_FMT_SGRBG14:
	case V4L2_PIX_FMT_SRGGB14:
	case V4L2_PIX_FMT_GREY:
	case V4L2_PIX_FMT_Y10:
	case V4L2_PIX_FMT_Y12:
		return MIPI;
	case V4L2_PIX_FMT_QBGGR8:
	case V4L2_PIX_FMT_QGBRG8: