Subversion Repositories Kolibri OS

Rev

Rev 881 | Go to most recent revision | Show entire file | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 881 Rev 883
Line 5... Line 5...
5
 
5
 
Line 6... Line 6...
6
typedef struct { float hi, lo; } range;
6
typedef struct { float hi, lo; } range;
Line 7... Line -...
7
 
-
 
Line 8... Line 7...
8
 
7
 
Line 9... Line 8...
9
#define R300_PIO     1
8
 
10
 
9
 
Line 121... Line 120...
121
    int singledac;
120
    int singledac;
122
} RADEONCardInfo;
121
} RADEONCardInfo;
123
 
122
 
Line 124... Line -...
124
 
-
 
125
 
123
 
126
#define RHD_FB_BAR         0
124
#define RHD_FB_BAR         0
Line 127... Line 125...
127
#define RHD_MMIO_BAR       2
125
#define RHD_MMIO_BAR       2
128
 
126
 
Line -... Line 127...
-
 
127
#define RHD_MEM_GART       1
-
 
128
#define RHD_MEM_FB         2
-
 
129
 
-
 
130
#define RADEON_DEFAULT_GART_SIZE         8       /* MB (must be 2^n and > 4MB) */
-
 
131
#define R300_DEFAULT_GART_SIZE           32      /* MB (for R300 and above) */
-
 
132
#define RADEON_DEFAULT_RING_SIZE         1       /* MB (must be page aligned) */
-
 
133
#define RADEON_DEFAULT_BUFFER_SIZE       2       /* MB (must be page aligned) */
-
 
134
#define RADEON_DEFAULT_GART_TEX_SIZE     1       /* MB (must be page aligned) */
-
 
135
 
-
 
136
#define RADEON_DEFAULT_CP_TIMEOUT        100000  /* usecs */
-
 
137
 
129
#define RHD_MEM_GART       1
138
#define RADEON_DEFAULT_PCI_APER_SIZE     32      /* in MB */
130
#define RHD_MEM_FB         2
139
 
131
 
140
 
132
typedef struct RHDRec
141
typedef struct RHDRec
Line 166... Line 175...
166
  RADEONErrata     ChipErrata;
175
  RADEONErrata     ChipErrata;
167
 
176
 
Line 168... Line 177...
168
  char             *chipset;
177
  char             *chipset;
Line 169... Line 178...
169
 
178
 
170
  int              IsIGP;
179
  Bool              IsIGP;
-
 
180
  Bool              IsMobility;
Line 171... Line 181...
171
  int              IsMobility;
181
  Bool              HasCRTC2;
172
 
182
 
Line 173... Line 183...
173
  u32_t            bus;
183
  u32_t            bus;
Line 191... Line 201...
191
 
201
 
Line 192... Line 202...
192
  u32_t            displayWidth;
202
  u32_t            displayWidth;
193
  u32_t            displayHeight;
203
  u32_t            displayHeight;
Line -... Line 204...
-
 
204
 
-
 
205
  u32_t            gartSize;
-
 
206
 
-
 
207
  u32_t*           ringBase;
-
 
208
  u32_t            ring_rp;
-
 
209
  u32_t            ring_wp;
-
 
210
  u32_t            ringSize;
-
 
211
  u32_t            ring_avail;
-
 
212
 
-
 
213
  u32_t            bufSize;
-
 
214
  u32_t            gartTexSize;
-
 
215
  u32_t            pciAperSize;
-
 
216
  u32_t            CPusecTimeout;
194
 
217
 
195
  int              __xmin;
218
  int              __xmin;
196
  int              __ymin;
219
  int              __ymin;
197
  int              __xmax;
220
  int              __xmax;
Line 198... Line 221...
198
  int              __ymax;
221
  int              __ymax;
199
 
222
 
200
  u32_t            gui_control;
223
  u32_t            gui_control;
Line 201... Line -...
201
  u32_t            dst_pitch_offset;
-
 
202
  u32_t            surface_cntl;
-
 
203
 
-
 
Line -... Line 224...
-
 
224
  u32_t            dst_pitch_offset;
-
 
225
  u32_t            surface_cntl;
-
 
226
 
-
 
227
 
204
  u32_t            *ring_base;
228
  volatile u32_t   host_rp   __attribute__ ((aligned (128)));
-
 
229
 
-
 
230
  volatile u32_t   scratch0  __attribute__ ((aligned (128)));
-
 
231
  volatile u32_t   scratch1;
-
 
232
  volatile u32_t   scratch2;
-
 
233
  volatile u32_t   scratch3;
-
 
234
  volatile u32_t   scratch4;
-
 
235
  volatile u32_t   scratch5;
205
  u32_t            ring_rp;
236
  volatile u32_t   scratch6;
Line 206... Line 237...
206
  u32_t            ring_wp;
237
  volatile u32_t   scratch7;
207
 
238
 
-
 
239
  int              RamWidth  __attribute__ ((aligned (128)));
208
  int              RamWidth;
240
  Bool             IsDDR;
Line 209... Line 241...
209
  Bool             IsDDR;
241
 
Line 249... Line 281...
249
# define RADEON_CNTL_PAINT_POLYLINE    0x00009500
281
# define RADEON_CNTL_PAINT_POLYLINE    0x00009500
250
# define RADEON_CNTL_PAINT_MULTI       0x00009A00
282
# define RADEON_CNTL_PAINT_MULTI       0x00009A00
Line 251... Line 283...
251
 
283
 
252
#define CP_PACKET0(reg, n)            \
284
#define CP_PACKET0(reg, n)            \
Line 253... Line 285...
253
	(RADEON_CP_PACKET0 | ((n) << 16) | ((reg) >> 2))
285
    (RADEON_CP_PACKET0 | ((n - 1 ) << 16) | ((reg) >> 2))
254
 
286
 
Line 255... Line 287...
255
#define CP_PACKET1(reg0, reg1)            \
287
#define CP_PACKET1(reg0, reg1)            \
256
	(RADEON_CP_PACKET1 | (((reg1) >> 2) << 11) | ((reg0) >> 2))
288
	(RADEON_CP_PACKET1 | (((reg1) >> 2) << 11) | ((reg0) >> 2))
Line 257... Line 289...
257
 
289
 
258
#define CP_PACKET2()              \
290
#define CP_PACKET2()                     \
Line -... Line 291...
-
 
291
  (RADEON_CP_PACKET2)
259
  (RADEON_CP_PACKET2)
292
 
260
 
293
#define CP_PACKET3( pkt, n )             \
-
 
294
	(RADEON_CP_PACKET3 | (pkt) | ((n) << 16))
-
 
295
 
-
 
296
 
-
 
297
#define BEGIN_RING( req ) do {                                     \
-
 
298
     int avail = rhd.ring_rp-rhd.ring_wp;                          \
-
 
299
     if (avail <=0 ) avail+= 0x4000;                                \
-
 
300
     if( (req)+128 > avail)                                        \
-
 
301
     {                                                             \
-
 
302
        rhd.ring_rp = INREG(RADEON_CP_RB_RPTR);                    \
-
 
303
        avail = rhd.ring_rp-rhd.ring_wp;                           \
-
 
304
        if (avail <= 0) avail+= 0x4000;                             \
261
#define CP_PACKET3( pkt, n )            \
305
        if( (req)+128 > avail){                                    \
262
	(RADEON_CP_PACKET3 | (pkt) | ((n) << 16))
306
           safe_sti(ifl);                                          \
Line 263... Line 307...
263
 
307
           return 0;                                               \
Line 264... Line 308...
264
#define BEGIN_RING( n ) do {            \
308
        };                                                         \
265
  ring = rhd.ring_base;                 \
-
 
266
  write = rhd.ring_wp;                  \
-
 
Line 267... Line 309...
267
} while (0)
309
     }                                                             \
268
 
310
     ring = &rhd.ringBase[rhd.ring_wp];                            \
269
#define ADVANCE_RING()
311
}while(0);
270
 
312
 
-
 
313
#define ADVANCE_RING()
271
#define OUT_RING( x ) do {        \
314
 
Line 272... Line 315...
272
	ring[write++] = (x);						\
315
#define OUT_RING( x )        *ring++ = (x)
Line 273... Line 316...
273
} while (0)
316
 
274
 
317
#define CP_REG(reg, val)                 \
275
#define OUT_RING_REG(reg, val)            \
318
do {                                     \
276
do {									\
319
    ring[0]  = CP_PACKET0((reg), 1);     \
277
    OUT_RING(CP_PACKET0(reg, 0));					\
320
    ring[1]  = (val);                    \
278
    OUT_RING(val);							\
321
    ring+=  2;                           \
279
} while (0)
322
} while (0)
280
 
323
 
281
#define DRM_MEMORYBARRIER()  __asm volatile("lock; addl $0,0(%%esp)" : : : "memory");
324
#define DRM_MEMORYBARRIER()  __asm volatile("lock; addl $0,0(%%esp)" : : : "memory");
Line 282... Line 325...
282
 
325
 
Line 316... Line 359...
316
{
359
{
317
  *(volatile u32_t *)((u8_t *)(rhd.MMIOBase + offset)) = value;
360
  *(volatile u32_t *)((u8_t *)(rhd.MMIOBase + offset)) = value;
318
}
361
}
319
 
362
 
Line -... Line 363...
-
 
363
//#define OUTREG( offset, value) \
-
 
364
//  *(volatile u32_t *)((u8_t *)(rhd.MMIOBase + (u32_t)(offset))) = (u32_t)value
-
 
365
 
Line 320... Line 366...
320
 
366
 
321
extern inline u32_t _RHDRegRead(RHDPtr rhdPtr, u16_t offset)
367
extern inline u32_t _RHDRegRead(RHDPtr rhdPtr, u16_t offset)
322
{
368
{
323
  return *(volatile u32_t *)((u8_t*)(rhdPtr->MMIOBase + offset));
369
  return *(volatile u32_t *)((u8_t*)(rhdPtr->MMIOBase + offset));
Line 333... Line 379...
333
  tmp |= (value & mask);
379
  tmp |= (value & mask);
334
  OUTREG(offset, tmp);
380
  OUTREG(offset, tmp);
335
};
381
};
336
 
382
 
Line -... Line 383...
-
 
383
 
-
 
384
#define INPLL( addr) RADEONINPLL( addr)
-
 
385
 
-
 
386
#define OUTPLL( addr, val) RADEONOUTPLL( addr, val)
-
 
387
 
-
 
388
 
337
extern inline void
389
extern inline void
338
_RHDRegWrite(RHDPtr rhdPtr, u16_t offset, u32_t value)
390
_RHDRegWrite(RHDPtr rhdPtr, u16_t offset, u32_t value)
339
{
391
{
340
  *(volatile u32_t *)((u8_t *)(rhdPtr->MMIOBase + offset)) = value;
392
  *(volatile u32_t *)((u8_t *)(rhdPtr->MMIOBase + offset)) = value;
341
}
393
}