1/* SPDX-License-Identifier: GPL-2.0 */
2/*
3 * Support for Intel Camera Imaging ISP subsystem.
4 * Copyright (c) 2015, Intel Corporation.
5 *
6 * This program is free software; you can redistribute it and/or modify it
7 * under the terms and conditions of the GNU General Public License,
8 * version 2, as published by the Free Software Foundation.
9 *
10 * This program is distributed in the hope it will be useful, but WITHOUT
11 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
12 * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License for
13 * more details.
14 */
15
16#ifndef __IA_CSS_TPG_H
17#define __IA_CSS_TPG_H
18
19/* @file
20 * This file contains support for the test pattern generator (TPG)
21 */
22
23/* Enumerate the TPG IDs.
24 */
25enum ia_css_tpg_id {
26	IA_CSS_TPG_ID0,
27	IA_CSS_TPG_ID1,
28	IA_CSS_TPG_ID2
29};
30
31/**
32 * Maximum number of TPG IDs.
33 *
34 * Make sure the value of this define gets changed to reflect the correct
35 * number of ia_css_tpg_id enum if you add/delete an item in the enum.
36 */
37#define N_CSS_TPG_IDS (IA_CSS_TPG_ID2 + 1)
38
39/* Enumerate the TPG modes.
40 */
41enum ia_css_tpg_mode {
42	IA_CSS_TPG_MODE_RAMP,
43	IA_CSS_TPG_MODE_CHECKERBOARD,
44	IA_CSS_TPG_MODE_FRAME_BASED_COLOR,
45	IA_CSS_TPG_MODE_MONO
46};
47
48/* @brief Configure the test pattern generator.
49 *
50 * Configure the Test Pattern Generator, the way these values are used to
51 * generate the pattern can be seen in the HRT extension for the test pattern
52 * generator:
53 * devices/test_pat_gen/hrt/include/test_pat_gen.h: hrt_calc_tpg_data().
54 *
55 * This interface is deprecated, it is not portable -> move to input system API
56 *
57@code
58unsigned int test_pattern_value(unsigned int x, unsigned int y)
59{
60 unsigned int x_val, y_val;
61 if (x_delta > 0) (x_val = (x << x_delta) & x_mask;
62 else (x_val = (x >> -x_delta) & x_mask;
63 if (y_delta > 0) (y_val = (y << y_delta) & y_mask;
64 else (y_val = (y >> -y_delta) & x_mask;
65 return (x_val + y_val) & xy_mask;
66}
67@endcode
68 */
69struct ia_css_tpg_config {
70	enum ia_css_tpg_id   id;
71	enum ia_css_tpg_mode mode;
72	unsigned int         x_mask;
73	int                  x_delta;
74	unsigned int         y_mask;
75	int                  y_delta;
76	unsigned int         xy_mask;
77};
78
79#endif /* __IA_CSS_TPG_H */
80