1 /*
2  * Support for Intel Camera Imaging ISP subsystem.
3  * Copyright (c) 2015, Intel Corporation.
4  *
5  * This program is free software; you can redistribute it and/or modify it
6  * under the terms and conditions of the GNU General Public License,
7  * version 2, as published by the Free Software Foundation.
8  *
9  * This program is distributed in the hope it will be useful, but WITHOUT
10  * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
11  * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License for
12  * more details.
13  */
14 
15 #ifndef __PIXELGEN_GLOBAL_H_INCLUDED__
16 #define __PIXELGEN_GLOBAL_H_INCLUDED__
17 
18 #include <type_support.h>
19 
20 /**
21  * Pixel-generator. ("pixelgen_global.h")
22  */
23 /*
24  * Duplicates "sync_generator_cfg_t" in "input_system_global.h".
25  */
26 typedef struct sync_generator_cfg_s sync_generator_cfg_t;
27 struct sync_generator_cfg_s {
28 	u32	hblank_cycles;
29 	u32	vblank_cycles;
30 	u32	pixels_per_clock;
31 	u32	nr_of_frames;
32 	u32	pixels_per_line;
33 	u32	lines_per_frame;
34 };
35 
36 typedef enum {
37 	PIXELGEN_TPG_MODE_RAMP = 0,
38 	PIXELGEN_TPG_MODE_CHBO,
39 	PIXELGEN_TPG_MODE_MONO,
40 	N_PIXELGEN_TPG_MODE
41 } pixelgen_tpg_mode_t;
42 
43 /*
44  * "pixelgen_tpg_cfg_t" duplicates parts of
45  * "tpg_cfg_t" in "input_system_global.h".
46  */
47 typedef struct pixelgen_tpg_cfg_s pixelgen_tpg_cfg_t;
48 struct pixelgen_tpg_cfg_s {
49 	pixelgen_tpg_mode_t	mode;	/* CHBO, MONO */
50 
51 	struct {
52 		/* be used by CHBO and MON */
53 		u32 R1;
54 		u32 G1;
55 		u32 B1;
56 
57 		/* be used by CHBO only */
58 		u32 R2;
59 		u32 G2;
60 		u32 B2;
61 	} color_cfg;
62 
63 	struct {
64 		u32	h_mask;		/* horizontal mask */
65 		u32	v_mask;		/* vertical mask */
66 		u32	hv_mask;	/* horizontal+vertical mask? */
67 	} mask_cfg;
68 
69 	struct {
70 		s32	h_delta;	/* horizontal delta? */
71 		s32	v_delta;	/* vertical delta? */
72 	} delta_cfg;
73 
74 	sync_generator_cfg_t	 sync_gen_cfg;
75 };
76 
77 /*
78  * "pixelgen_prbs_cfg_t" duplicates parts of
79  * prbs_cfg_t" in "input_system_global.h".
80  */
81 typedef struct pixelgen_prbs_cfg_s pixelgen_prbs_cfg_t;
82 struct pixelgen_prbs_cfg_s {
83 	s32	seed0;
84 	s32	seed1;
85 
86 	sync_generator_cfg_t	sync_gen_cfg;
87 };
88 
89 /* end of Pixel-generator: TPG. ("pixelgen_global.h") */
90 #endif /* __PIXELGEN_GLOBAL_H_INCLUDED__ */
91