1/*
2	Copyright (c) 2002-2005, Thomas Kurschel
3
4
5	Part of Radeon accelerant
6
7	Internal header file
8*/
9
10#ifndef _RADEON_ACCELERANT_H
11#define _RADEON_ACCELERANT_H
12
13
14#include "radeon_interface.h"
15#include "accelerant_ext.h"
16
17#ifdef __cplusplus
18extern "C" {
19#endif
20
21void    _sPrintf(const char *format, ...);
22//bool    set_dprintf_enabled(bool);	/* returns old enable flag */
23
24#define dprintf _sPrintf
25
26extern int debug_level_flow;
27extern int debug_level_info;
28extern int debug_level_error;
29
30/*#define DEBUG_WAIT_ON_MSG 1000000
31#define DEBUG_WAIT_ON_ERROR 1000000*/
32
33#define DEBUG_MSG_PREFIX "Radeon - "
34
35#define DEBUG_MAX_LEVEL_FLOW 3
36
37#include "debug_ext.h"
38
39
40// info about this accelerant
41typedef struct accelerator_info {
42	shared_info *si;			// info shared between accelerants
43	virtual_card *vc;			// associated virtual card
44	vuint8 *regs;				// pointer to mapped registers
45								// !! dont't make it vuint32, access macros rely on 8 bits !!
46
47	area_id shared_info_area;	// info shared between accelerants
48	area_id regs_area;			// MM I/O registers
49	area_id virtual_card_area;	// info about virtual card
50
51	// mapped-in (non)-local memory;
52	// as si->local_mem contains a pointer to the local frame buffer,
53	// only mt_pci and mt_agp are filled directly, mt_nonlocal contains
54	// a copy of either mt_pci or mt_agp, mt_local a copy of si->local_mem
55	struct {
56		area_id 		area;		// area of clone
57		unsigned char 	*data;		// CPU address of area
58	} mapped_memory[mt_last+1];
59
60	int accelerant_is_clone;	// true, if this is a cloned accelerant
61
62	int fd;						// file descriptor of kernel driver
63	struct log_info_t *log;
64
65	area_id mode_list_area;		// cloned list of standard display modes
66	display_mode *mode_list;	// list of standard display modes
67} accelerator_info;
68
69
70#define IS_INTERNAL_TV_OUT( tv_chip ) \
71	( (tv_chip) == tc_internal_rt1 || (tv_chip) == tc_internal_rt2 )
72
73
74// vesa_modes.c
75extern const display_timing vesa_mode_list[];
76extern const size_t vesa_mode_list_count;
77
78// SetDisplayMode.c
79uint32 Radeon_RoundVWidth( int virtual_width, int bpp );
80status_t Radeon_MoveDisplay( accelerator_info *ai, uint16 h_display_start, uint16 v_display_start );
81void Radeon_EnableIRQ( accelerator_info *ai, bool enable );
82
83// multimon.c
84void Radeon_HideMultiMode( virtual_card *vc, display_mode *mode );
85void Radeon_DetectMultiMode( virtual_card *vc, display_mode *mode );
86void Radeon_VerifyMultiMode( virtual_card *vc, shared_info *si, display_mode *mode );
87void Radeon_InitMultiModeVars( accelerator_info *ai, display_mode *mode );
88status_t Radeon_CheckMultiMonTunnel( virtual_card *vc, display_mode *mode,
89	const display_mode *low, const display_mode *high, bool *isTunnel );
90bool Radeon_NeedsSecondPort( display_mode *mode );
91bool Radeon_DifferentPorts( display_mode *mode );
92
93
94// ProposeDisplayMode.c
95bool Radeon_GetFormat( int space, int *format, int *bpp );
96status_t Radeon_CreateModeList( shared_info *si );
97
98
99// dpms.c
100status_t Radeon_SetDPMS( accelerator_info *ai, int crtc_idx, int mode );
101uint32 Radeon_GetDPMS( accelerator_info *ai, int crtc_idx );
102
103
104// Cursor.c
105void Radeon_SetCursorColors( accelerator_info *ai, int crtc_idx );
106void Radeon_ShowCursor( accelerator_info *ai, int crtc_idx );
107
108
109// Acceleration.c
110void Radeon_Init2D( accelerator_info *ai );
111void Radeon_AllocateVirtualCardStateBuffer( accelerator_info *ai );
112void Radeon_FreeVirtualCardStateBuffer( accelerator_info *ai );
113void Radeon_FillStateBuffer( accelerator_info *ai, uint32 datatype );
114
115
116// driver_wrapper.c
117status_t Radeon_WaitForIdle( accelerator_info *ai, bool keep_lock );
118status_t Radeon_WaitForFifo( accelerator_info *ai, int entries );
119void Radeon_ResetEngine( accelerator_info *ai );
120
121status_t Radeon_VIPRead( accelerator_info *ai, uint channel, uint address, uint32 *data );
122status_t Radeon_VIPWrite( accelerator_info *ai, uint8 channel, uint address, uint32 data );
123int Radeon_FindVIPDevice( accelerator_info *ai, uint32 device_id );
124
125
126// settings.cpp
127void Radeon_ReadSettings( virtual_card *vc );
128void Radeon_WriteSettings( virtual_card *vc );
129
130
131// overlay.c
132void Radeon_HideOverlay( accelerator_info *ai );
133status_t Radeon_UpdateOverlay( accelerator_info *ai );
134void Radeon_InitOverlay( accelerator_info *ai, int crtc_idx );
135
136// EngineManagement.c
137void Radeon_Spin( uint32 delay );
138
139
140// monitor_detection.c
141void Radeon_DetectDisplays( accelerator_info *ai );
142bool Radeon_ReadEDID( accelerator_info *ai, uint32 ddc_port, edid1_info *edid );
143
144
145// palette.c
146void Radeon_InitPalette( accelerator_info *ai, int crtc_idx );
147
148
149// theatre_out.c
150void Radeon_DetectTVOut( accelerator_info *ai );
151
152
153#ifdef __cplusplus
154}
155#endif
156
157#endif
158