xref: /haiku/src/add-ons/accelerants/intel_extreme/Pipes.h (revision d35a52e8e2c019cf532fe20fed4e58516c4f53fe)
1b01aed83SAlexander von Gluck IV /*
2b01aed83SAlexander von Gluck IV  * Copyright 2011-2015, Haiku, Inc. All Rights Reserved.
3b01aed83SAlexander von Gluck IV  * Distributed under the terms of the MIT License.
4b01aed83SAlexander von Gluck IV  *
5b01aed83SAlexander von Gluck IV  * Authors:
6b01aed83SAlexander von Gluck IV  *		Michael Lotz, mmlr@mlotz.ch
7b01aed83SAlexander von Gluck IV  *		Alexander von Gluck IV, kallisti5@unixzen.com
8b01aed83SAlexander von Gluck IV  */
9b01aed83SAlexander von Gluck IV #ifndef INTEL_PIPE_H
10b01aed83SAlexander von Gluck IV #define INTEL_PIPE_H
11b01aed83SAlexander von Gluck IV 
12b01aed83SAlexander von Gluck IV 
13b01aed83SAlexander von Gluck IV #include <edid.h>
14b01aed83SAlexander von Gluck IV 
15b01aed83SAlexander von Gluck IV #include "intel_extreme.h"
16b01aed83SAlexander von Gluck IV 
17b01aed83SAlexander von Gluck IV #include "pll.h"
18b01aed83SAlexander von Gluck IV #include "FlexibleDisplayInterface.h"
19b01aed83SAlexander von Gluck IV 
20b01aed83SAlexander von Gluck IV 
21b01aed83SAlexander von Gluck IV #define MAX_PIPES	2
22b01aed83SAlexander von Gluck IV 
23b01aed83SAlexander von Gluck IV 
24b01aed83SAlexander von Gluck IV void program_pipe_color_modes(uint32 colorMode);
25b01aed83SAlexander von Gluck IV 
26b01aed83SAlexander von Gluck IV //class FDILink;
27b01aed83SAlexander von Gluck IV //class PanelFitter;
28b01aed83SAlexander von Gluck IV 
29b01aed83SAlexander von Gluck IV class Pipe {
30b01aed83SAlexander von Gluck IV public:
31b01aed83SAlexander von Gluck IV 									Pipe(pipe_index pipeIndex);
32b01aed83SAlexander von Gluck IV 									~Pipe();
33b01aed83SAlexander von Gluck IV 
34b01aed83SAlexander von Gluck IV 		pipe_index					Index()
35b01aed83SAlexander von Gluck IV 										{ return fPipeIndex; }
36b01aed83SAlexander von Gluck IV 
37b01aed83SAlexander von Gluck IV 		bool						IsEnabled();
38*d35a52e8SAlexander von Gluck IV 		void						Enable(display_mode* mode);
39b01aed83SAlexander von Gluck IV 		void						Disable();
40b01aed83SAlexander von Gluck IV 
41b01aed83SAlexander von Gluck IV 		void						ConfigureTimings(
42b01aed83SAlexander von Gluck IV 										const pll_divisors& divisors,
43b01aed83SAlexander von Gluck IV 										uint32 pixelClock,
44b01aed83SAlexander von Gluck IV 										uint32 extraFlags);
45b01aed83SAlexander von Gluck IV 
46b01aed83SAlexander von Gluck IV 		// access to the various parts of the pipe
47b01aed83SAlexander von Gluck IV 		::FDILink*					FDI()
48b01aed83SAlexander von Gluck IV 										{ return fFDILink; }
49b01aed83SAlexander von Gluck IV 	//	::PanelFitter*				PanelFitter()
50b01aed83SAlexander von Gluck IV 	//									{ return fPanelFitter; }
51b01aed83SAlexander von Gluck IV 
52b01aed83SAlexander von Gluck IV private:
53b01aed83SAlexander von Gluck IV 		void						_Enable(bool enable);
54*d35a52e8SAlexander von Gluck IV 		void						_EnableTranscoder(display_mode* mode);
55*d35a52e8SAlexander von Gluck IV 
56*d35a52e8SAlexander von Gluck IV 		bool						fHasTranscoder;
57b01aed83SAlexander von Gluck IV 
58b01aed83SAlexander von Gluck IV 		FDILink*					fFDILink;
59b01aed83SAlexander von Gluck IV 	//	PanelFitter*				fPanelFitter;
60b01aed83SAlexander von Gluck IV 
61b01aed83SAlexander von Gluck IV 		pipe_index					fPipeIndex;
62b01aed83SAlexander von Gluck IV 
63*d35a52e8SAlexander von Gluck IV 		addr_t						fPipeOffset;
64*d35a52e8SAlexander von Gluck IV 		addr_t						fPlaneOffset;
65b01aed83SAlexander von Gluck IV };
66b01aed83SAlexander von Gluck IV 
67b01aed83SAlexander von Gluck IV 
68b01aed83SAlexander von Gluck IV #endif // INTEL_PIPE_H
69