Commit a8a2d75b authored by Sakari Ailus's avatar Sakari Ailus Committed by Mauro Carvalho Chehab
Browse files

media: v4l: uapi: ccs: Add controls for analogue gain constants



Add V4L2 controls for analogue gain constants required to control
analogue gain. The values are device specific and thus need to be obtained
from the driver.

Signed-off-by: default avatarSakari Ailus <sakari.ailus@linux.intel.com>
Signed-off-by: default avatarMauro Carvalho Chehab <mchehab+huawei@kernel.org>
parent db08f69e
Loading
Loading
Loading
Loading
+25 −0
Original line number Diff line number Diff line
@@ -56,4 +56,29 @@ analogue data is never read from the pixel matrix that are outside the
configured selection rectangle that designates crop. The difference has an
effect in device timing and likely also in power consumption.

Private controls
----------------

The MIPI CCS driver implements a number of private controls under
``V4L2_CID_USER_BASE_CCS`` to control the MIPI CCS compliant camera sensors.

Analogue gain model
~~~~~~~~~~~~~~~~~~~

The CCS defines an analogue gain model where the gain can be calculated using
the following formula:

	gain = m0 * x + c0 / (m1 * x + c1)

Either m0 or c0 will be zero. The constants that are device specific, can be
obtained from the following controls:

	V4L2_CID_CCS_ANALOGUE_GAIN_M0
	V4L2_CID_CCS_ANALOGUE_GAIN_M1
	V4L2_CID_CCS_ANALOGUE_GAIN_C0
	V4L2_CID_CCS_ANALOGUE_GAIN_C1

The analogue gain (``x`` in the formula) is controlled through
``V4L2_CID_ANALOGUE_GAIN`` in this case.

**Copyright** |copy| 2020 Intel Corporation
+1 −0
Original line number Diff line number Diff line
@@ -11840,6 +11840,7 @@ F: Documentation/userspace-api/media/drivers/ccs.rst
F:	drivers/media/i2c/ccs-pll.c
F:	drivers/media/i2c/ccs-pll.h
F:	drivers/media/i2c/ccs/
F:	include/uapi/linux/ccs.h
F:	include/uapi/linux/smiapp.h
MIPS
+14 −0
Original line number Diff line number Diff line
/* SPDX-License-Identifier: GPL-2.0-only WITH Linux-syscall-note */
/* Copyright (C) 2020 Intel Corporation */

#ifndef __UAPI_CCS_H__
#define __UAPI_CCS_H__

#include <linux/v4l2-controls.h>

#define V4L2_CID_CCS_ANALOGUE_GAIN_M0		(V4L2_CID_USER_CCS_BASE + 1)
#define V4L2_CID_CCS_ANALOGUE_GAIN_C0		(V4L2_CID_USER_CCS_BASE + 2)
#define V4L2_CID_CCS_ANALOGUE_GAIN_M1		(V4L2_CID_USER_CCS_BASE + 3)
#define V4L2_CID_CCS_ANALOGUE_GAIN_C1		(V4L2_CID_USER_CCS_BASE + 4)

#endif