radeon_video.h revision 209ff23f
1209ff23fSmrg#ifndef __RADEON_VIDEO_H__
2209ff23fSmrg#define __RADEON_VIDEO_H__
3209ff23fSmrg
4209ff23fSmrg#include "xf86i2c.h"
5209ff23fSmrg#include "fi1236.h"
6209ff23fSmrg#include "msp3430.h"
7209ff23fSmrg#include "tda9885.h"
8209ff23fSmrg#include "uda1380.h"
9209ff23fSmrg#include "i2c_def.h"
10209ff23fSmrg
11209ff23fSmrg#include "generic_bus.h"
12209ff23fSmrg#include "theatre.h"
13209ff23fSmrg
14209ff23fSmrg#include "xf86Crtc.h"
15209ff23fSmrg
16209ff23fSmrg/* Xvideo port struct */
17209ff23fSmrgtypedef struct {
18209ff23fSmrg   uint32_t	 transform_index;
19209ff23fSmrg   uint32_t	 gamma; /* gamma value x 1000 */
20209ff23fSmrg   int           brightness;
21209ff23fSmrg   int           saturation;
22209ff23fSmrg   int           hue;
23209ff23fSmrg   int           contrast;
24209ff23fSmrg   int           red_intensity;
25209ff23fSmrg   int           green_intensity;
26209ff23fSmrg   int           blue_intensity;
27209ff23fSmrg
28209ff23fSmrg	/* overlay composition mode */
29209ff23fSmrg   int		 alpha_mode; /* 0 = key mode, 1 = global mode */
30209ff23fSmrg   int		 ov_alpha;
31209ff23fSmrg   int		 gr_alpha;
32209ff23fSmrg
33209ff23fSmrg     /* i2c bus and devices */
34209ff23fSmrg   I2CBusPtr     i2c;
35209ff23fSmrg   uint32_t      radeon_i2c_timing;
36209ff23fSmrg   uint32_t      radeon_M;
37209ff23fSmrg   uint32_t      radeon_N;
38209ff23fSmrg   uint32_t      i2c_status;
39209ff23fSmrg   uint32_t      i2c_cntl;
40209ff23fSmrg
41209ff23fSmrg   FI1236Ptr     fi1236;
42209ff23fSmrg   uint8_t       tuner_type;
43209ff23fSmrg   MSP3430Ptr    msp3430;
44209ff23fSmrg   TDA9885Ptr    tda9885;
45209ff23fSmrg   UDA1380Ptr    uda1380;
46209ff23fSmrg
47209ff23fSmrg   /* VIP bus and devices */
48209ff23fSmrg   GENERIC_BUS_Ptr  VIP;
49209ff23fSmrg   TheatrePtr       theatre;
50209ff23fSmrg
51209ff23fSmrg   Bool          video_stream_active;
52209ff23fSmrg   int           encoding;
53209ff23fSmrg   uint32_t      frequency;
54209ff23fSmrg   int           volume;
55209ff23fSmrg   Bool          mute;
56209ff23fSmrg   int           sap_channel;
57209ff23fSmrg   int           v;
58209ff23fSmrg   uint32_t      adjustment; /* general purpose variable */
59209ff23fSmrg
60209ff23fSmrg#define METHOD_BOB      0
61209ff23fSmrg#define METHOD_SINGLE   1
62209ff23fSmrg#define METHOD_WEAVE    2
63209ff23fSmrg#define METHOD_ADAPTIVE 3
64209ff23fSmrg
65209ff23fSmrg   int           overlay_deinterlacing_method;
66209ff23fSmrg
67209ff23fSmrg   int           capture_vbi_data;
68209ff23fSmrg
69209ff23fSmrg   int           dec_brightness;
70209ff23fSmrg   int           dec_saturation;
71209ff23fSmrg   int           dec_hue;
72209ff23fSmrg   int           dec_contrast;
73209ff23fSmrg
74209ff23fSmrg   Bool          doubleBuffer;
75209ff23fSmrg   unsigned char currentBuffer;
76209ff23fSmrg   RegionRec     clip;
77209ff23fSmrg   uint32_t      colorKey;
78209ff23fSmrg   uint32_t      videoStatus;
79209ff23fSmrg   Time          offTime;
80209ff23fSmrg   Time          freeTime;
81209ff23fSmrg   Bool          autopaint_colorkey;
82209ff23fSmrg   xf86CrtcPtr   desired_crtc;
83209ff23fSmrg
84209ff23fSmrg   int           size;
85209ff23fSmrg#ifdef USE_EXA
86209ff23fSmrg   ExaOffscreenArea *off_screen;
87209ff23fSmrg#endif
88209ff23fSmrg
89209ff23fSmrg   void         *video_memory;
90209ff23fSmrg   int           video_offset;
91209ff23fSmrg
92209ff23fSmrg   Atom          device_id, location_id, instance_id;
93209ff23fSmrg
94209ff23fSmrg    /* textured video */
95209ff23fSmrg    Bool textured;
96209ff23fSmrg    DrawablePtr pDraw;
97209ff23fSmrg    PixmapPtr pPixmap;
98209ff23fSmrg
99209ff23fSmrg    uint32_t src_offset;
100209ff23fSmrg    uint32_t src_pitch;
101209ff23fSmrg    uint8_t *src_addr;
102209ff23fSmrg
103209ff23fSmrg    int id;
104209ff23fSmrg    int src_w, src_h, dst_w, dst_h;
105209ff23fSmrg    int w, h;
106209ff23fSmrg    int drw_x, drw_y;
107209ff23fSmrg} RADEONPortPrivRec, *RADEONPortPrivPtr;
108209ff23fSmrg
109209ff23fSmrg
110209ff23fSmrgvoid RADEONInitI2C(ScrnInfoPtr pScrn, RADEONPortPrivPtr pPriv);
111209ff23fSmrgvoid RADEONResetI2C(ScrnInfoPtr pScrn, RADEONPortPrivPtr pPriv);
112209ff23fSmrg
113209ff23fSmrgvoid RADEONVIP_init(ScrnInfoPtr pScrn, RADEONPortPrivPtr pPriv);
114209ff23fSmrgvoid RADEONVIP_reset(ScrnInfoPtr pScrn, RADEONPortPrivPtr pPriv);
115209ff23fSmrg
116209ff23fSmrguint32_t
117209ff23fSmrgRADEONAllocateMemory(ScrnInfoPtr pScrn, void **mem_struct, int size);
118209ff23fSmrgvoid
119209ff23fSmrgRADEONFreeMemory(ScrnInfoPtr pScrn, void *mem_struct);
120209ff23fSmrg
121209ff23fSmrgint  RADEONSetPortAttribute(ScrnInfoPtr, Atom, INT32, pointer);
122209ff23fSmrgint  RADEONGetPortAttribute(ScrnInfoPtr, Atom ,INT32 *, pointer);
123209ff23fSmrgvoid RADEONStopVideo(ScrnInfoPtr, pointer, Bool);
124209ff23fSmrgvoid RADEONQueryBestSize(ScrnInfoPtr, Bool, short, short, short, short,
125209ff23fSmrg			 unsigned int *, unsigned int *, pointer);
126209ff23fSmrgint  RADEONQueryImageAttributes(ScrnInfoPtr, int, unsigned short *,
127209ff23fSmrg			unsigned short *,  int *, int *);
128209ff23fSmrg
129209ff23fSmrgXF86VideoAdaptorPtr
130209ff23fSmrgRADEONSetupImageTexturedVideo(ScreenPtr pScreen);
131209ff23fSmrg
132209ff23fSmrgvoid
133209ff23fSmrgRADEONCopyData(ScrnInfoPtr pScrn,
134209ff23fSmrg	       unsigned char *src, unsigned char *dst,
135209ff23fSmrg	       unsigned int srcPitch, unsigned int dstPitch,
136209ff23fSmrg	       unsigned int h, unsigned int w, unsigned int bpp);
137209ff23fSmrg
138209ff23fSmrgvoid
139209ff23fSmrgRADEONCopyMungedData(ScrnInfoPtr pScrn,
140209ff23fSmrg		     unsigned char *src1, unsigned char *src2,
141209ff23fSmrg		     unsigned char *src3, unsigned char *dst1,
142209ff23fSmrg		     unsigned int srcPitch, unsigned int srcPitch2,
143209ff23fSmrg		     unsigned int dstPitch, unsigned int h, unsigned int w);
144209ff23fSmrg
145209ff23fSmrg#endif
146