radeon_video.h revision 40732134
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
16b7e1c893Smrg#include "bicubic_table.h"
17b7e1c893Smrg
1840732134Srjs#include <xf86xvmc.h>
1940732134Srjs
20b7e1c893Smrg#define ClipValue(v,min,max) ((v) < (min) ? (min) : (v) > (max) ? (max) : (v))
21b7e1c893Smrg
22209ff23fSmrg/* Xvideo port struct */
23209ff23fSmrgtypedef struct {
24209ff23fSmrg   uint32_t	 transform_index;
25209ff23fSmrg   uint32_t	 gamma; /* gamma value x 1000 */
26209ff23fSmrg   int           brightness;
27209ff23fSmrg   int           saturation;
28209ff23fSmrg   int           hue;
29209ff23fSmrg   int           contrast;
30209ff23fSmrg   int           red_intensity;
31209ff23fSmrg   int           green_intensity;
32209ff23fSmrg   int           blue_intensity;
33209ff23fSmrg
34209ff23fSmrg	/* overlay composition mode */
35209ff23fSmrg   int		 alpha_mode; /* 0 = key mode, 1 = global mode */
36209ff23fSmrg   int		 ov_alpha;
37209ff23fSmrg   int		 gr_alpha;
38209ff23fSmrg
39209ff23fSmrg     /* i2c bus and devices */
40209ff23fSmrg   I2CBusPtr     i2c;
41209ff23fSmrg   uint32_t      radeon_i2c_timing;
42209ff23fSmrg   uint32_t      radeon_M;
43209ff23fSmrg   uint32_t      radeon_N;
44209ff23fSmrg   uint32_t      i2c_status;
45209ff23fSmrg   uint32_t      i2c_cntl;
46b7e1c893Smrg
47209ff23fSmrg   FI1236Ptr     fi1236;
48209ff23fSmrg   uint8_t       tuner_type;
49209ff23fSmrg   MSP3430Ptr    msp3430;
50209ff23fSmrg   TDA9885Ptr    tda9885;
51209ff23fSmrg   UDA1380Ptr    uda1380;
52209ff23fSmrg
53209ff23fSmrg   /* VIP bus and devices */
54209ff23fSmrg   GENERIC_BUS_Ptr  VIP;
55b7e1c893Smrg   TheatrePtr       theatre;
56209ff23fSmrg
57209ff23fSmrg   Bool          video_stream_active;
58209ff23fSmrg   int           encoding;
59209ff23fSmrg   uint32_t      frequency;
60209ff23fSmrg   int           volume;
61209ff23fSmrg   Bool          mute;
62209ff23fSmrg   int           sap_channel;
63209ff23fSmrg   int           v;
64209ff23fSmrg   uint32_t      adjustment; /* general purpose variable */
65b7e1c893Smrg
66209ff23fSmrg#define METHOD_BOB      0
67209ff23fSmrg#define METHOD_SINGLE   1
68209ff23fSmrg#define METHOD_WEAVE    2
69209ff23fSmrg#define METHOD_ADAPTIVE 3
70209ff23fSmrg
71209ff23fSmrg   int           overlay_deinterlacing_method;
72209ff23fSmrg
73209ff23fSmrg   int           capture_vbi_data;
74209ff23fSmrg
75209ff23fSmrg   int           dec_brightness;
76209ff23fSmrg   int           dec_saturation;
77209ff23fSmrg   int           dec_hue;
78209ff23fSmrg   int           dec_contrast;
79209ff23fSmrg
80209ff23fSmrg   Bool          doubleBuffer;
81209ff23fSmrg   unsigned char currentBuffer;
82209ff23fSmrg   RegionRec     clip;
83209ff23fSmrg   uint32_t      colorKey;
84209ff23fSmrg   uint32_t      videoStatus;
85209ff23fSmrg   Time          offTime;
86209ff23fSmrg   Time          freeTime;
87209ff23fSmrg   Bool          autopaint_colorkey;
88209ff23fSmrg   xf86CrtcPtr   desired_crtc;
89209ff23fSmrg
90209ff23fSmrg   int           size;
91209ff23fSmrg
92209ff23fSmrg   void         *video_memory;
93209ff23fSmrg   int           video_offset;
94209ff23fSmrg
95b7e1c893Smrg   int           planeu_offset;
96b7e1c893Smrg   int           planev_offset;
97b7e1c893Smrg
98b7e1c893Smrg   /* bicubic filtering */
99b7e1c893Smrg   Bool          bicubic_enabled;
100b7e1c893Smrg   uint32_t      bicubic_src_offset;
101b7e1c893Smrg   int           bicubic_state;
102b7e1c893Smrg#define BICUBIC_OFF  0
103b7e1c893Smrg#define BICUBIC_ON   1
104b7e1c893Smrg#define BICUBIC_AUTO 2
105b7e1c893Smrg
106209ff23fSmrg   Atom          device_id, location_id, instance_id;
107209ff23fSmrg
108209ff23fSmrg    /* textured video */
109209ff23fSmrg    Bool textured;
110209ff23fSmrg    DrawablePtr pDraw;
111209ff23fSmrg    PixmapPtr pPixmap;
112209ff23fSmrg
113209ff23fSmrg    uint32_t src_offset;
114209ff23fSmrg    uint32_t src_pitch;
115209ff23fSmrg    uint8_t *src_addr;
116209ff23fSmrg
117209ff23fSmrg    int id;
118209ff23fSmrg    int src_w, src_h, dst_w, dst_h;
119209ff23fSmrg    int w, h;
120209ff23fSmrg    int drw_x, drw_y;
121ad43ddacSmrg    int src_x, src_y;
122b7e1c893Smrg    int vsync;
1232f39173dSmrg    Bool is_planar;
1242f39173dSmrg    int vtx_count;
125b13dfe66Smrg    int hw_align;
126ad43ddacSmrg
127ad43ddacSmrg    struct radeon_bo *src_bo[2];
128209ff23fSmrg} RADEONPortPrivRec, *RADEONPortPrivPtr;
129209ff23fSmrg
130ad43ddacSmrg/* Reference color space transform data */
131ad43ddacSmrgtypedef struct tagREF_TRANSFORM
132ad43ddacSmrg{
133ad43ddacSmrg    float   RefLuma;
134ad43ddacSmrg    float   RefRCb;
135ad43ddacSmrg    float   RefRCr;
136ad43ddacSmrg    float   RefGCb;
137ad43ddacSmrg    float   RefGCr;
138ad43ddacSmrg    float   RefBCb;
139ad43ddacSmrg    float   RefBCr;
140ad43ddacSmrg} REF_TRANSFORM;
141ad43ddacSmrg
142ad43ddacSmrg#define RTFSaturation(a)   (1.0 + ((a)*1.0)/1000.0)
143ad43ddacSmrg#define RTFBrightness(a)   (((a)*1.0)/2000.0)
144ad43ddacSmrg#define RTFIntensity(a)   (((a)*1.0)/2000.0)
145ad43ddacSmrg#define RTFContrast(a)   (1.0 + ((a)*1.0)/1000.0)
146ad43ddacSmrg#define RTFHue(a)   (((a)*3.1416)/1000.0)
147209ff23fSmrg
148209ff23fSmrgvoid RADEONInitI2C(ScrnInfoPtr pScrn, RADEONPortPrivPtr pPriv);
149209ff23fSmrgvoid RADEONResetI2C(ScrnInfoPtr pScrn, RADEONPortPrivPtr pPriv);
150209ff23fSmrg
151209ff23fSmrgvoid RADEONVIP_init(ScrnInfoPtr pScrn, RADEONPortPrivPtr pPriv);
152209ff23fSmrgvoid RADEONVIP_reset(ScrnInfoPtr pScrn, RADEONPortPrivPtr pPriv);
153209ff23fSmrg
154209ff23fSmrgint  RADEONSetPortAttribute(ScrnInfoPtr, Atom, INT32, pointer);
155209ff23fSmrgint  RADEONGetPortAttribute(ScrnInfoPtr, Atom ,INT32 *, pointer);
156921a55d8Smrgvoid RADEONFreeVideoMemory(ScrnInfoPtr pScrn, RADEONPortPrivPtr pPriv);
157209ff23fSmrgvoid RADEONStopVideo(ScrnInfoPtr, pointer, Bool);
158209ff23fSmrgvoid RADEONQueryBestSize(ScrnInfoPtr, Bool, short, short, short, short,
159209ff23fSmrg			 unsigned int *, unsigned int *, pointer);
160209ff23fSmrgint  RADEONQueryImageAttributes(ScrnInfoPtr, int, unsigned short *,
161209ff23fSmrg			unsigned short *,  int *, int *);
162209ff23fSmrg
163209ff23fSmrgXF86VideoAdaptorPtr
164209ff23fSmrgRADEONSetupImageTexturedVideo(ScreenPtr pScreen);
165209ff23fSmrg
16640732134SrjsXF86MCAdaptorPtr
16740732134SrjsRADEONCreateAdaptorXvMC(ScreenPtr pScreen, char *xv_adaptor_name);
16840732134Srjs
169209ff23fSmrgvoid
170209ff23fSmrgRADEONCopyData(ScrnInfoPtr pScrn,
171209ff23fSmrg	       unsigned char *src, unsigned char *dst,
172209ff23fSmrg	       unsigned int srcPitch, unsigned int dstPitch,
173209ff23fSmrg	       unsigned int h, unsigned int w, unsigned int bpp);
174209ff23fSmrg
175209ff23fSmrgvoid
176209ff23fSmrgRADEONCopyMungedData(ScrnInfoPtr pScrn,
177209ff23fSmrg		     unsigned char *src1, unsigned char *src2,
178209ff23fSmrg		     unsigned char *src3, unsigned char *dst1,
179209ff23fSmrg		     unsigned int srcPitch, unsigned int srcPitch2,
180209ff23fSmrg		     unsigned int dstPitch, unsigned int h, unsigned int w);
181209ff23fSmrg
182209ff23fSmrg#endif
183