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