1 | /* SPDX-License-Identifier: GPL-2.0-only */ |
2 | /* |
3 | * Copyright (c) 2019 Microchip Technology Inc. and its subsidiaries |
4 | * |
5 | * Author: Eugen Hristev <eugen.hristev@microchip.com> |
6 | */ |
7 | |
8 | #ifndef __LINUX_ATMEL_ISC_MEDIA_H__ |
9 | #define __LINUX_ATMEL_ISC_MEDIA_H__ |
10 | |
11 | /* |
12 | * There are 8 controls available: |
13 | * 4 gain controls, sliders, for each of the BAYER components: R, B, GR, GB. |
14 | * These gains are multipliers for each component, in format unsigned 0:4:9 with |
15 | * a default value of 512 (1.0 multiplier). |
16 | * 4 offset controls, sliders, for each of the BAYER components: R, B, GR, GB. |
17 | * These offsets are added/substracted from each component, in format signed |
18 | * 1:12:0 with a default value of 0 (+/- 0) |
19 | * |
20 | * To expose this to userspace, added 8 custom controls, in an auto cluster. |
21 | * |
22 | * To summarize the functionality: |
23 | * The auto cluster switch is the auto white balance control, and it works |
24 | * like this: |
25 | * AWB == 1: autowhitebalance is on, the do_white_balance button is inactive, |
26 | * the gains/offsets are inactive, but volatile and readable. |
27 | * Thus, the results of the whitebalance algorithm are available to userspace to |
28 | * read at any time. |
29 | * AWB == 0: autowhitebalance is off, cluster is in manual mode, user can |
30 | * configure the gain/offsets directly. |
31 | * More than that, if the do_white_balance button is |
32 | * pressed, the driver will perform one-time-adjustment, (preferably with color |
33 | * checker card) and the userspace can read again the new values. |
34 | * |
35 | * With this feature, the userspace can save the coefficients and reinstall them |
36 | * for example after reboot or reprobing the driver. |
37 | */ |
38 | |
39 | enum atmel_isc_ctrl_id { |
40 | /* Red component gain control */ |
41 | ISC_CID_R_GAIN = (V4L2_CID_USER_ATMEL_ISC_BASE + 0), |
42 | /* Blue component gain control */ |
43 | ISC_CID_B_GAIN, |
44 | /* Green Red component gain control */ |
45 | ISC_CID_GR_GAIN, |
46 | /* Green Blue gain control */ |
47 | ISC_CID_GB_GAIN, |
48 | /* Red component offset control */ |
49 | ISC_CID_R_OFFSET, |
50 | /* Blue component offset control */ |
51 | ISC_CID_B_OFFSET, |
52 | /* Green Red component offset control */ |
53 | ISC_CID_GR_OFFSET, |
54 | /* Green Blue component offset control */ |
55 | ISC_CID_GB_OFFSET, |
56 | }; |
57 | |
58 | #endif |
59 | |