Can xavier get raw16 image from camera?

Hi,

[b]We want to connect 1080P cameras to xavier, its image format is raw16. But there are some problems.

I set "csi_pixel_bit_depth = “16"” in camera dtsi, but the camera driver cannot probe. I find it report “Unsupported pixel format” error in sensor_common_parse_image_props() of sensor_common.c for the reason that it cannot recognize raw16 in extract_pixel_format().[/b]

static int extract_pixel_format(
const char *pixel_t, u32 *format)
{
size_t size = strnlen(pixel_t, OF_MAX_STR_LEN);

if (strncmp(pixel_t, "bayer_bggr10", size) == 0)
	*format = V4L2_PIX_FMT_SBGGR10;
else if (strncmp(pixel_t, "bayer_rggb10", size) == 0)
	*format = V4L2_PIX_FMT_SRGGB10;
else if (strncmp(pixel_t, "bayer_grbg10", size) == 0)
	*format = V4L2_PIX_FMT_SGRBG10;
else if (strncmp(pixel_t, "bayer_bggr12", size) == 0)
	*format = V4L2_PIX_FMT_SBGGR12;
else if (strncmp(pixel_t, "bayer_rggb12", size) == 0)
	*format = V4L2_PIX_FMT_SRGGB12;
else if (strncmp(pixel_t, "bayer_wdr_pwl_rggb12", size) == 0)
	*format = V4L2_PIX_FMT_SRGGB12;
else if (strncmp(pixel_t, "bayer_wdr_dol_rggb10", size) == 0)
	*format = V4L2_PIX_FMT_SRGGB10;
else if (strncmp(pixel_t, "bayer_xbggr10p", size) == 0)
	*format = V4L2_PIX_FMT_XBGGR10P;
else if (strncmp(pixel_t, "bayer_xrggb10p", size) == 0)
	*format = V4L2_PIX_FMT_XRGGB10P;
else {
	pr_err("%s: Need to extend format%s\n", __func__, pixel_t);
	return -EINVAL;
}

return 0;

}

The vi5_setup_surface() in “vi5_fops.c” will match data type according to the settings in dtsi, but the “enum tegra_image_dt” has no RAW16.

enum tegra_image_dt {
TEGRA_IMAGE_DT_YUV420_8 = 24,
TEGRA_IMAGE_DT_YUV420_10,

TEGRA_IMAGE_DT_YUV420CSPS_8 = 28,
TEGRA_IMAGE_DT_YUV420CSPS_10,
TEGRA_IMAGE_DT_YUV422_8,
TEGRA_IMAGE_DT_YUV422_10,
TEGRA_IMAGE_DT_RGB444,
TEGRA_IMAGE_DT_RGB555,
TEGRA_IMAGE_DT_RGB565,
TEGRA_IMAGE_DT_RGB666,
TEGRA_IMAGE_DT_RGB888,

TEGRA_IMAGE_DT_RAW6 = 40,
TEGRA_IMAGE_DT_RAW7,
TEGRA_IMAGE_DT_RAW8,
TEGRA_IMAGE_DT_RAW10,
TEGRA_IMAGE_DT_RAW12,
TEGRA_IMAGE_DT_RAW14,

};

So how can I get raw16 data from our cameras? Thank you.

hello lisubin328719,

according to Xavier Series (SoC) Technical Reference Manual, you might refer to [MIPI Camera Serial Interface] chapter and to check that RAW16 is supported from aspect of the hardware capability.

therefore, please update the kernel drivers to extend the support formats. you may also check Kernel Customization chapter for the steps to update the kernel image.

also, please check Camera Architecture Stack, there’re two approaches to access camera sensors.
you might working with v4l2 standard controls if you would like to get raw16 data files,
for example,

$ v4l2-ctl -d /dev/video0 --set-fmt-video=width=2592,height=1944,pixelformat=RG10 --set-ctrl bypass_mode=0 --stream-mmap --stream-count=1 --stream-to=test.raw

Are you getting better results if you lower your bit color space from 16 to 10?