xref: /linux/drivers/staging/media/atomisp/pci/css_2401_system/pixelgen_global.h (revision cbecf716ca618fd44feda6bd9a64a8179d031fc5)
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 __PIXELGEN_GLOBAL_H_INCLUDED__
17 #define __PIXELGEN_GLOBAL_H_INCLUDED__
18 
19 #include <type_support.h>
20 
21 /**
22  * Pixel-generator. ("pixelgen_global.h")
23  */
24 /*
25  * Duplicates "sync_generator_cfg_t" in "input_system_global.h".
26  */
27 typedef struct isp2401_sync_generator_cfg_s isp2401_sync_generator_cfg_t;
28 struct isp2401_sync_generator_cfg_s {
29 	u32	hblank_cycles;
30 	u32	vblank_cycles;
31 	u32	pixels_per_clock;
32 	u32	nr_of_frames;
33 	u32	pixels_per_line;
34 	u32	lines_per_frame;
35 };
36 
37 typedef enum {
38 	PIXELGEN_TPG_MODE_RAMP = 0,
39 	PIXELGEN_TPG_MODE_CHBO,
40 	PIXELGEN_TPG_MODE_MONO,
41 	N_PIXELGEN_TPG_MODE
42 } pixelgen_tpg_mode_t;
43 
44 /*
45  * "pixelgen_tpg_cfg_t" duplicates parts of
46  * "tpg_cfg_t" in "input_system_global.h".
47  */
48 typedef struct pixelgen_tpg_cfg_s pixelgen_tpg_cfg_t;
49 struct pixelgen_tpg_cfg_s {
50 	pixelgen_tpg_mode_t	mode;	/* CHBO, MONO */
51 
52 	struct {
53 		/* be used by CHBO and MON */
54 		u32 R1;
55 		u32 G1;
56 		u32 B1;
57 
58 		/* be used by CHBO only */
59 		u32 R2;
60 		u32 G2;
61 		u32 B2;
62 	} color_cfg;
63 
64 	struct {
65 		u32	h_mask;		/* horizontal mask */
66 		u32	v_mask;		/* vertical mask */
67 		u32	hv_mask;	/* horizontal+vertical mask? */
68 	} mask_cfg;
69 
70 	struct {
71 		s32	h_delta;	/* horizontal delta? */
72 		s32	v_delta;	/* vertical delta? */
73 	} delta_cfg;
74 
75 	isp2401_sync_generator_cfg_t	 sync_gen_cfg;
76 };
77 
78 /*
79  * "pixelgen_prbs_cfg_t" duplicates parts of
80  * prbs_cfg_t" in "input_system_global.h".
81  */
82 typedef struct pixelgen_prbs_cfg_s pixelgen_prbs_cfg_t;
83 struct pixelgen_prbs_cfg_s {
84 	s32	seed0;
85 	s32	seed1;
86 
87 	isp2401_sync_generator_cfg_t	sync_gen_cfg;
88 };
89 
90 /* end of Pixel-generator: TPG. ("pixelgen_global.h") */
91 #endif /* __PIXELGEN_GLOBAL_H_INCLUDED__ */
92