13d0407baSopenharmony_ci/* SPDX-License-Identifier: ((GPL-2.0+ WITH Linux-syscall-note) OR MIT)
23d0407baSopenharmony_ci *
33d0407baSopenharmony_ci * Copyright (C) 2019 Rockchip Electronics Co., Ltd.
43d0407baSopenharmony_ci */
53d0407baSopenharmony_ci
63d0407baSopenharmony_ci#ifndef _UAPI_RKCIF_CONFIG_H
73d0407baSopenharmony_ci#define _UAPI_RKCIF_CONFIG_H
83d0407baSopenharmony_ci
93d0407baSopenharmony_ci#include <linux/types.h>
103d0407baSopenharmony_ci#include <linux/v4l2-controls.h>
113d0407baSopenharmony_ci
123d0407baSopenharmony_ci#define RKCIF_API_VERSION KERNEL_VERSION(0, 1, 0xa)
133d0407baSopenharmony_ci
143d0407baSopenharmony_ci#define RKCIF_CMD_GET_CSI_MEMORY_MODE _IOR('V', BASE_VIDIOC_PRIVATE + 0, int)
153d0407baSopenharmony_ci
163d0407baSopenharmony_ci#define RKCIF_CMD_SET_CSI_MEMORY_MODE _IOW('V', BASE_VIDIOC_PRIVATE + 1, int)
173d0407baSopenharmony_ci
183d0407baSopenharmony_ci#define RKCIF_CMD_GET_SCALE_BLC _IOR('V', BASE_VIDIOC_PRIVATE + 2, struct bayer_blc)
193d0407baSopenharmony_ci
203d0407baSopenharmony_ci#define RKCIF_CMD_SET_SCALE_BLC _IOW('V', BASE_VIDIOC_PRIVATE + 3, struct bayer_blc)
213d0407baSopenharmony_ci
223d0407baSopenharmony_ci/* cif memory mode
233d0407baSopenharmony_ci * 0: raw12/raw10/raw8 8bit memory compact
243d0407baSopenharmony_ci * 1: raw12/raw10 16bit memory one pixel
253d0407baSopenharmony_ci *    low align for rv1126/rv1109/rk356x
263d0407baSopenharmony_ci *    |15|14|13|12|11|10| 9| 8| 7| 6| 5| 4| 3| 2| 1| 0|
273d0407baSopenharmony_ci *    | -| -| -| -|11|10| 9| 8| 7| 6| 5| 4| 3| 2| 1| 0|
283d0407baSopenharmony_ci * 2: raw12/raw10 16bit memory one pixel
293d0407baSopenharmony_ci *    high align for rv1126/rv1109/rk356x
303d0407baSopenharmony_ci *    |15|14|13|12|11|10| 9| 8| 7| 6| 5| 4| 3| 2| 1| 0|
313d0407baSopenharmony_ci *    |11|10| 9| 8| 7| 6| 5| 4| 3| 2| 1| 0| -| -| -| -|
323d0407baSopenharmony_ci *
333d0407baSopenharmony_ci * note: rv1109/rv1126/rk356x dvp only support uncompact mode,
343d0407baSopenharmony_ci *       and can be set low align or high align
353d0407baSopenharmony_ci */
363d0407baSopenharmony_ci
373d0407baSopenharmony_cienum cif_csi_lvds_memory {
383d0407baSopenharmony_ci    CSI_LVDS_MEM_COMPACT = 0,
393d0407baSopenharmony_ci    CSI_LVDS_MEM_WORD_LOW_ALIGN = 1,
403d0407baSopenharmony_ci    CSI_LVDS_MEM_WORD_HIGH_ALIGN = 2,
413d0407baSopenharmony_ci};
423d0407baSopenharmony_ci
433d0407baSopenharmony_ci/* black level for scale image
443d0407baSopenharmony_ci * The sequence of pattern00~03 is the same as the output of sensor bayer
453d0407baSopenharmony_ci */
463d0407baSopenharmony_ci
473d0407baSopenharmony_cistruct bayer_blc {
483d0407baSopenharmony_ci    u8 pattern00;
493d0407baSopenharmony_ci    u8 pattern01;
503d0407baSopenharmony_ci    u8 pattern02;
513d0407baSopenharmony_ci    u8 pattern03;
523d0407baSopenharmony_ci};
533d0407baSopenharmony_ci#endif
54