Commit | Line | Data |
---|---|---|
4e52889f EH |
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 |