Subversion Repositories Kolibri OS

Rev

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

Rev 1128 Rev 1179
Line 43... Line 43...
43
 *	- Unmappabled vram ?
43
 *	- Unmappabled vram ?
44
 *	- TESTING, TESTING, TESTING
44
 *	- TESTING, TESTING, TESTING
45
 */
45
 */
Line 46... Line 46...
46
 
46
 
47
#include 
47
#include 
Line 48... Line 48...
48
#include 
48
#include 
Line 49... Line 49...
49
 
49
 
50
#include 
50
#include 
-
 
51
 
-
 
52
#include 
51
 
53
#include "drm_edid.h"
52
#include 
54
 
53
#include "drm_edid.h"
-
 
Line 54... Line 55...
54
#include "radeon_mode.h"
55
#include "radeon_family.h"
Line -... Line 56...
-
 
56
#include "radeon_mode.h"
-
 
57
#include "radeon_reg.h"
-
 
58
 
-
 
59
#include 
55
#include "radeon_reg.h"
60
 
56
#include "r300.h"
61
/*
57
 
62
 * Modules parameters.
58
#include 
63
 */
59
 
64
extern int radeon_no_wb;
60
extern int radeon_modeset;
65
extern int radeon_modeset;
61
extern int radeon_dynclks;
66
extern int radeon_dynclks;
-
 
67
extern int radeon_r4xx_atom;
62
extern int radeon_r4xx_atom;
68
extern int radeon_agpmode;
-
 
69
extern int radeon_vram_limit;
-
 
70
extern int radeon_gart_size;
-
 
71
extern int radeon_benchmarking;
-
 
72
extern int radeon_testing;
-
 
73
extern int radeon_connector_table;
-
 
74
extern int radeon_tv;
-
 
75
 
-
 
76
 
-
 
77
static inline uint8_t __raw_readb(const volatile void __iomem *addr)
-
 
78
{
-
 
79
    return *(const volatile uint8_t __force *) addr;
-
 
80
}
-
 
81
 
-
 
82
static inline uint16_t __raw_readw(const volatile void __iomem *addr)
-
 
83
{
-
 
84
    return *(const volatile uint16_t __force *) addr;
-
 
85
}
-
 
86
 
-
 
87
static inline uint32_t __raw_readl(const volatile void __iomem *addr)
-
 
88
{
-
 
89
    return *(const volatile uint32_t __force *) addr;
-
 
90
}
-
 
91
 
-
 
92
#define readb __raw_readb
-
 
93
#define readw __raw_readw
-
 
94
#define readl __raw_readl
-
 
95
 
-
 
96
 
-
 
97
 
-
 
98
static inline void __raw_writeb(uint8_t b, volatile void __iomem *addr)
-
 
99
{
-
 
100
    *(volatile uint8_t __force *) addr = b;
-
 
101
}
-
 
102
 
-
 
103
static inline void __raw_writew(uint16_t b, volatile void __iomem *addr)
-
 
104
{
-
 
105
    *(volatile uint16_t __force *) addr = b;
-
 
106
}
-
 
107
 
-
 
108
static inline void __raw_writel(uint32_t b, volatile void __iomem *addr)
-
 
109
{
-
 
110
    *(volatile uint32_t __force *) addr = b;
-
 
111
}
-
 
112
 
-
 
113
static inline void __raw_writeq(__u64 b, volatile void __iomem *addr)
-
 
114
{
-
 
115
        *(volatile __u64 *)addr = b;
-
 
116
}
-
 
117
 
-
 
118
#define writeb __raw_writeb
-
 
119
#define writew __raw_writew
-
 
120
#define writel __raw_writel
-
 
121
#define writeq __raw_writeq
Line 63... Line 122...
63
extern int radeon_agpmode;
122
 
64
extern int radeon_vram_limit;
123
//#define writeb(b,addr) *(volatile uint8_t* ) addr = (uint8_t)b
65
extern int radeon_gart_size;
124
//#define writew(b,addr) *(volatile uint16_t*) addr = (uint16_t)b
66
extern int radeon_benchmarking;
125
//#define writel(b,addr) *(volatile uint32_t*) addr = (uint32_t)b
67
extern int radeon_connector_table;
126
 
68
 
127
 
69
/*
128
/*
70
 * Copy from radeon_drv.h so we don't have to include both and have conflicting
129
 * Copy from radeon_drv.h so we don't have to include both and have conflicting
71
 * symbol;
-
 
72
 */
-
 
73
#define RADEON_MAX_USEC_TIMEOUT         100000  /* 100 ms */
-
 
74
#define RADEON_IB_POOL_SIZE             16
-
 
75
#define RADEON_DEBUGFS_MAX_NUM_FILES	32
-
 
76
#define RADEONFB_CONN_LIMIT             4
-
 
77
 
-
 
78
enum radeon_family {
-
 
79
    CHIP_R100,
-
 
80
    CHIP_RV100,
-
 
81
    CHIP_RS100,
-
 
82
    CHIP_RV200,
-
 
83
    CHIP_RS200,
-
 
84
    CHIP_R200,
-
 
85
    CHIP_RV250,
-
 
86
    CHIP_RS300,
-
 
87
    CHIP_RV280,
-
 
88
    CHIP_R300,
-
 
89
    CHIP_R350,
-
 
90
    CHIP_RV350,
-
 
91
    CHIP_RV380,
-
 
92
    CHIP_R420,
-
 
93
    CHIP_R423,
-
 
94
    CHIP_RV410,
-
 
95
    CHIP_RS400,
-
 
96
    CHIP_RS480,
-
 
97
    CHIP_RS600,
-
 
98
    CHIP_RS690,
-
 
99
    CHIP_RS740,
-
 
100
    CHIP_RV515,
-
 
101
    CHIP_R520,
-
 
102
    CHIP_RV530,
-
 
103
    CHIP_RV560,
-
 
104
    CHIP_RV570,
-
 
105
    CHIP_R580,
-
 
106
    CHIP_R600,
-
 
107
    CHIP_RV610,
-
 
108
    CHIP_RV630,
-
 
109
    CHIP_RV620,
-
 
110
    CHIP_RV635,
-
 
111
    CHIP_RV670,
-
 
112
    CHIP_RS780,
-
 
113
    CHIP_RV770,
-
 
114
    CHIP_RV730,
-
 
115
    CHIP_RV710,
-
 
116
    CHIP_LAST,
-
 
117
};
-
 
118
 
-
 
119
enum radeon_chip_flags {
-
 
120
    RADEON_FAMILY_MASK = 0x0000ffffUL,
-
 
121
    RADEON_FLAGS_MASK = 0xffff0000UL,
-
 
122
    RADEON_IS_MOBILITY = 0x00010000UL,
-
 
123
    RADEON_IS_IGP = 0x00020000UL,
130
 * symbol;
124
    RADEON_SINGLE_CRTC = 0x00040000UL,
-
 
125
    RADEON_IS_AGP = 0x00080000UL,
-
 
126
    RADEON_HAS_HIERZ = 0x00100000UL,
-
 
Line 127... Line 131...
127
    RADEON_IS_PCIE = 0x00200000UL,
131
 */
128
    RADEON_NEW_MEMMAP = 0x00400000UL,
132
#define RADEON_MAX_USEC_TIMEOUT         100000  /* 100 ms */
129
    RADEON_IS_PCI = 0x00800000UL,
133
#define RADEON_IB_POOL_SIZE             16
130
    RADEON_IS_IGPGART = 0x01000000UL,
134
#define RADEON_DEBUGFS_MAX_NUM_FILES	32
Line 147... Line 151...
147
/*
151
/*
148
 * BIOS.
152
 * BIOS.
149
 */
153
 */
150
bool radeon_get_bios(struct radeon_device *rdev);
154
bool radeon_get_bios(struct radeon_device *rdev);
Line -... Line 155...
-
 
155
 
151
 
156
 
152
/*
157
/*
153
 * Clocks
158
 * Dummy page
-
 
159
 */
-
 
160
struct radeon_dummy_page {
-
 
161
	struct page	*page;
-
 
162
	dma_addr_t	addr;
-
 
163
};
-
 
164
int radeon_dummy_page_init(struct radeon_device *rdev);
-
 
165
void radeon_dummy_page_fini(struct radeon_device *rdev);
Line -... Line 166...
-
 
166
 
-
 
167
 
-
 
168
/*
154
 */
169
 * Clocks
155
 
170
 */
156
struct radeon_clock {
171
struct radeon_clock {
157
	struct radeon_pll p1pll;
172
	struct radeon_pll p1pll;
158
	struct radeon_pll p2pll;
173
	struct radeon_pll p2pll;
159
	struct radeon_pll spll;
174
	struct radeon_pll spll;
160
	struct radeon_pll mpll;
175
	struct radeon_pll mpll;
161
	/* 10 Khz units */
176
	/* 10 Khz units */
162
	uint32_t default_mclk;
177
	uint32_t default_mclk;
Line -... Line 178...
-
 
178
	uint32_t default_sclk;
163
	uint32_t default_sclk;
179
};
164
};
180
 
165
 
181
 
166
/*
182
/*
167
 * Fences.
183
 * Fences.
Line 199... Line 215...
199
int radeon_fence_wait_next(struct radeon_device *rdev);
215
int radeon_fence_wait_next(struct radeon_device *rdev);
200
int radeon_fence_wait_last(struct radeon_device *rdev);
216
int radeon_fence_wait_last(struct radeon_device *rdev);
201
struct radeon_fence *radeon_fence_ref(struct radeon_fence *fence);
217
struct radeon_fence *radeon_fence_ref(struct radeon_fence *fence);
202
void radeon_fence_unref(struct radeon_fence **fence);
218
void radeon_fence_unref(struct radeon_fence **fence);
Line -... Line 219...
-
 
219
 
-
 
220
/*
-
 
221
 * Tiling registers
-
 
222
 */
-
 
223
struct radeon_surface_reg {
-
 
224
	struct radeon_object *robj;
-
 
225
};
-
 
226
 
Line 203... Line 227...
203
 
227
#define RADEON_GEM_MAX_SURFACES 8
204
 
228
 
205
/*
229
/*
206
 * Radeon buffer.
230
 * Radeon buffer.
Line 211... Line 235...
211
	struct list_head	list;
235
	struct list_head	list;
212
	struct radeon_object	*robj;
236
	struct radeon_object	*robj;
213
	uint64_t		gpu_offset;
237
	uint64_t		gpu_offset;
214
	unsigned		rdomain;
238
	unsigned		rdomain;
215
	unsigned		wdomain;
239
	unsigned		wdomain;
-
 
240
	uint32_t                tiling_flags;
216
};
241
};
Line 217... Line 242...
217
 
242
 
218
int radeon_object_init(struct radeon_device *rdev);
243
int radeon_object_init(struct radeon_device *rdev);
219
void radeon_object_fini(struct radeon_device *rdev);
244
void radeon_object_fini(struct radeon_device *rdev);
Line 292... Line 317...
292
 */
317
 */
293
struct radeon_mc {
318
struct radeon_mc {
294
    resource_size_t     aper_size;
319
    resource_size_t     aper_size;
295
    resource_size_t     aper_base;
320
    resource_size_t     aper_base;
296
    resource_size_t     agp_base;
321
    resource_size_t     agp_base;
-
 
322
	/* for some chips with <= 32MB we need to lie
297
    unsigned            gtt_location;
323
	 * about vram size near mc fb location */
-
 
324
	u64			mc_vram_size;
-
 
325
	u64			gtt_location;
298
    unsigned            gtt_size;
326
	u64			gtt_size;
-
 
327
	u64			gtt_start;
-
 
328
	u64			gtt_end;
299
    unsigned            vram_location;
329
	u64			vram_location;
300
    unsigned            vram_size;
330
	u64			vram_start;
-
 
331
	u64			vram_end;
301
    unsigned            vram_width;
332
    unsigned            vram_width;
-
 
333
	u64			real_vram_size;
302
    int                 vram_mtrr;
334
    int                 vram_mtrr;
303
    bool                vram_is_ddr;
335
    bool                vram_is_ddr;
304
};
336
};
Line 305... Line 337...
305
 
337
 
Line 343... Line 375...
343
	struct radeon_fence	*fence;
375
	struct radeon_fence	*fence;
344
	volatile uint32_t	*ptr;
376
	volatile uint32_t	*ptr;
345
	uint32_t		length_dw;
377
	uint32_t		length_dw;
346
};
378
};
Line -... Line 379...
-
 
379
 
-
 
380
/*
-
 
381
 * locking -
-
 
382
 * mutex protects scheduled_ibs, ready, alloc_bm
347
 
383
 */
348
struct radeon_ib_pool {
384
struct radeon_ib_pool {
349
//	struct mutex		mutex;
385
//	struct mutex		mutex;
350
	struct radeon_object	*robj;
386
	struct radeon_object	*robj;
351
	struct list_head	scheduled_ibs;
387
	struct list_head	scheduled_ibs;
Line 368... Line 404...
368
	uint32_t		ptr_mask;
404
	uint32_t		ptr_mask;
369
//	struct mutex		mutex;
405
//	struct mutex		mutex;
370
	bool			ready;
406
	bool			ready;
371
};
407
};
Line -... Line 408...
-
 
408
 
-
 
409
struct r600_blit {
-
 
410
	struct radeon_object	*shader_obj;
-
 
411
	u64 shader_gpu_addr;
-
 
412
	u32 vs_offset, ps_offset;
-
 
413
	u32 state_offset;
-
 
414
	u32 state_len;
-
 
415
	u32 vb_used, vb_total;
-
 
416
	struct radeon_ib *vb_ib;
-
 
417
};
372
 
418
 
373
int radeon_ib_get(struct radeon_device *rdev, struct radeon_ib **ib);
419
int radeon_ib_get(struct radeon_device *rdev, struct radeon_ib **ib);
374
void radeon_ib_free(struct radeon_device *rdev, struct radeon_ib **ib);
420
void radeon_ib_free(struct radeon_device *rdev, struct radeon_ib **ib);
375
int radeon_ib_schedule(struct radeon_device *rdev, struct radeon_ib *ib);
421
int radeon_ib_schedule(struct radeon_device *rdev, struct radeon_ib *ib);
376
int radeon_ib_pool_init(struct radeon_device *rdev);
422
int radeon_ib_pool_init(struct radeon_device *rdev);
Line 420... Line 466...
420
	/* indices of various chunks */
466
	/* indices of various chunks */
421
	int			chunk_ib_idx;
467
	int			chunk_ib_idx;
422
	int			chunk_relocs_idx;
468
	int			chunk_relocs_idx;
423
	struct radeon_ib	*ib;
469
	struct radeon_ib	*ib;
424
	void			*track;
470
	void			*track;
-
 
471
	unsigned		family;
425
};
472
};
Line 426... Line 473...
426
 
473
 
427
struct radeon_cs_packet {
474
struct radeon_cs_packet {
428
	unsigned	idx;
475
	unsigned	idx;
Line 454... Line 501...
454
	struct radeon_object	*wb_obj;
501
	struct radeon_object	*wb_obj;
455
	volatile uint32_t	*wb;
502
	volatile uint32_t	*wb;
456
	uint64_t		gpu_addr;
503
	uint64_t		gpu_addr;
457
};
504
};
Line -... Line 505...
-
 
505
 
-
 
506
/**
-
 
507
 * struct radeon_pm - power management datas
-
 
508
 * @max_bandwidth:      maximum bandwidth the gpu has (MByte/s)
-
 
509
 * @igp_sideport_mclk:  sideport memory clock Mhz (rs690,rs740,rs780,rs880)
-
 
510
 * @igp_system_mclk:    system clock Mhz (rs690,rs740,rs780,rs880)
-
 
511
 * @igp_ht_link_clk:    ht link clock Mhz (rs690,rs740,rs780,rs880)
-
 
512
 * @igp_ht_link_width:  ht link width in bits (rs690,rs740,rs780,rs880)
-
 
513
 * @k8_bandwidth:       k8 bandwidth the gpu has (MByte/s) (IGP)
-
 
514
 * @sideport_bandwidth: sideport bandwidth the gpu has (MByte/s) (IGP)
-
 
515
 * @ht_bandwidth:       ht bandwidth the gpu has (MByte/s) (IGP)
-
 
516
 * @core_bandwidth:     core GPU bandwidth the gpu has (MByte/s) (IGP)
-
 
517
 * @sclk:          	GPU clock Mhz (core bandwith depends of this clock)
-
 
518
 * @needed_bandwidth:   current bandwidth needs
-
 
519
 *
-
 
520
 * It keeps track of various data needed to take powermanagement decision.
-
 
521
 * Bandwith need is used to determine minimun clock of the GPU and memory.
-
 
522
 * Equation between gpu/memory clock and available bandwidth is hw dependent
-
 
523
 * (type of memory, bus size, efficiency, ...)
-
 
524
 */
-
 
525
struct radeon_pm {
-
 
526
	fixed20_12		max_bandwidth;
-
 
527
	fixed20_12		igp_sideport_mclk;
-
 
528
	fixed20_12		igp_system_mclk;
-
 
529
	fixed20_12		igp_ht_link_clk;
-
 
530
	fixed20_12		igp_ht_link_width;
-
 
531
	fixed20_12		k8_bandwidth;
-
 
532
	fixed20_12		sideport_bandwidth;
-
 
533
	fixed20_12		ht_bandwidth;
-
 
534
	fixed20_12		core_bandwidth;
-
 
535
	fixed20_12		sclk;
-
 
536
	fixed20_12		needed_bandwidth;
Line 458... Line 537...
458
 
537
};
459
 
538
 
460
/*
539
/*
461
 * ASIC specific functions.
540
 * ASIC specific functions.
462
 */
541
 */
-
 
542
struct radeon_asic {
-
 
543
	int (*init)(struct radeon_device *rdev);
-
 
544
	void (*fini)(struct radeon_device *rdev);
463
struct radeon_asic {
545
	int (*resume)(struct radeon_device *rdev);
464
	int (*init)(struct radeon_device *rdev);
546
	int (*suspend)(struct radeon_device *rdev);
-
 
547
	void (*errata)(struct radeon_device *rdev);
465
	void (*errata)(struct radeon_device *rdev);
548
	void (*vram_info)(struct radeon_device *rdev);
466
	void (*vram_info)(struct radeon_device *rdev);
549
	void (*vga_set_state)(struct radeon_device *rdev, bool state);
467
	int (*gpu_reset)(struct radeon_device *rdev);
550
	int (*gpu_reset)(struct radeon_device *rdev);
468
	int (*mc_init)(struct radeon_device *rdev);
551
	int (*mc_init)(struct radeon_device *rdev);
469
	void (*mc_fini)(struct radeon_device *rdev);
552
	void (*mc_fini)(struct radeon_device *rdev);
-
 
553
	int (*wb_init)(struct radeon_device *rdev);
-
 
554
	void (*wb_fini)(struct radeon_device *rdev);
470
	int (*wb_init)(struct radeon_device *rdev);
555
	int (*gart_init)(struct radeon_device *rdev);
471
	void (*wb_fini)(struct radeon_device *rdev);
556
	void (*gart_fini)(struct radeon_device *rdev);
472
	int (*gart_enable)(struct radeon_device *rdev);
557
	int (*gart_enable)(struct radeon_device *rdev);
473
	void (*gart_disable)(struct radeon_device *rdev);
558
	void (*gart_disable)(struct radeon_device *rdev);
474
	void (*gart_tlb_flush)(struct radeon_device *rdev);
559
	void (*gart_tlb_flush)(struct radeon_device *rdev);
475
	int (*gart_set_page)(struct radeon_device *rdev, int i, uint64_t addr);
560
	int (*gart_set_page)(struct radeon_device *rdev, int i, uint64_t addr);
476
	int (*cp_init)(struct radeon_device *rdev, unsigned ring_size);
561
	int (*cp_init)(struct radeon_device *rdev, unsigned ring_size);
-
 
562
	void (*cp_fini)(struct radeon_device *rdev);
477
	void (*cp_fini)(struct radeon_device *rdev);
563
	void (*cp_disable)(struct radeon_device *rdev);
-
 
564
	void (*cp_commit)(struct radeon_device *rdev);
-
 
565
	void (*ring_start)(struct radeon_device *rdev);
-
 
566
	int (*ring_test)(struct radeon_device *rdev);
478
	void (*cp_disable)(struct radeon_device *rdev);
567
	void (*ring_ib_execute)(struct radeon_device *rdev, struct radeon_ib *ib);
479
	void (*ring_start)(struct radeon_device *rdev);
568
	int (*ib_test)(struct radeon_device *rdev);
-
 
569
	int (*irq_set)(struct radeon_device *rdev);
480
	int (*irq_set)(struct radeon_device *rdev);
570
	int (*irq_process)(struct radeon_device *rdev);
481
	int (*irq_process)(struct radeon_device *rdev);
571
	u32 (*get_vblank_counter)(struct radeon_device *rdev, int crtc);
482
	void (*fence_ring_emit)(struct radeon_device *rdev, struct radeon_fence *fence);
572
	void (*fence_ring_emit)(struct radeon_device *rdev, struct radeon_fence *fence);
483
	int (*cs_parse)(struct radeon_cs_parser *p);
573
	int (*cs_parse)(struct radeon_cs_parser *p);
484
	int (*copy_blit)(struct radeon_device *rdev,
574
	int (*copy_blit)(struct radeon_device *rdev,
Line 498... Line 588...
498
		    struct radeon_fence *fence);
588
		    struct radeon_fence *fence);
499
	void (*set_engine_clock)(struct radeon_device *rdev, uint32_t eng_clock);
589
	void (*set_engine_clock)(struct radeon_device *rdev, uint32_t eng_clock);
500
	void (*set_memory_clock)(struct radeon_device *rdev, uint32_t mem_clock);
590
	void (*set_memory_clock)(struct radeon_device *rdev, uint32_t mem_clock);
501
	void (*set_pcie_lanes)(struct radeon_device *rdev, int lanes);
591
	void (*set_pcie_lanes)(struct radeon_device *rdev, int lanes);
502
	void (*set_clock_gating)(struct radeon_device *rdev, int enable);
592
	void (*set_clock_gating)(struct radeon_device *rdev, int enable);
-
 
593
	int (*set_surface_reg)(struct radeon_device *rdev, int reg,
-
 
594
			       uint32_t tiling_flags, uint32_t pitch,
-
 
595
			       uint32_t offset, uint32_t obj_size);
-
 
596
	int (*clear_surface_reg)(struct radeon_device *rdev, int reg);
-
 
597
	void (*bandwidth_update)(struct radeon_device *rdev);
-
 
598
};
-
 
599
 
-
 
600
/*
-
 
601
 * Asic structures
-
 
602
 */
-
 
603
struct r100_asic {
-
 
604
	const unsigned	*reg_safe_bm;
-
 
605
	unsigned	reg_safe_bm_size;
-
 
606
};
-
 
607
 
-
 
608
struct r300_asic {
-
 
609
	const unsigned	*reg_safe_bm;
-
 
610
	unsigned	reg_safe_bm_size;
-
 
611
};
-
 
612
 
-
 
613
struct r600_asic {
-
 
614
	unsigned max_pipes;
-
 
615
	unsigned max_tile_pipes;
-
 
616
	unsigned max_simds;
-
 
617
	unsigned max_backends;
-
 
618
	unsigned max_gprs;
-
 
619
	unsigned max_threads;
-
 
620
	unsigned max_stack_entries;
-
 
621
	unsigned max_hw_contexts;
-
 
622
	unsigned max_gs_threads;
-
 
623
	unsigned sx_max_export_size;
-
 
624
	unsigned sx_max_export_pos_size;
-
 
625
	unsigned sx_max_export_smx_size;
-
 
626
	unsigned sq_num_cf_insts;
-
 
627
};
-
 
628
 
-
 
629
struct rv770_asic {
-
 
630
	unsigned max_pipes;
-
 
631
	unsigned max_tile_pipes;
-
 
632
	unsigned max_simds;
-
 
633
	unsigned max_backends;
-
 
634
	unsigned max_gprs;
-
 
635
	unsigned max_threads;
-
 
636
	unsigned max_stack_entries;
-
 
637
	unsigned max_hw_contexts;
-
 
638
	unsigned max_gs_threads;
-
 
639
	unsigned sx_max_export_size;
-
 
640
	unsigned sx_max_export_pos_size;
-
 
641
	unsigned sx_max_export_smx_size;
-
 
642
	unsigned sq_num_cf_insts;
-
 
643
	unsigned sx_num_of_sets;
-
 
644
	unsigned sc_prim_fifo_size;
-
 
645
	unsigned sc_hiz_tile_fifo_size;
-
 
646
	unsigned sc_earlyz_tile_fifo_fize;
503
};
647
};
Line 504... Line 648...
504
 
648
 
505
union radeon_asic_config {
649
union radeon_asic_config {
-
 
650
	struct r300_asic	r300;
-
 
651
	struct r100_asic	r100;
-
 
652
	struct r600_asic	r600;
506
	struct r300_asic	r300;
653
	struct rv770_asic	rv770;
Line 507... Line 654...
507
};
654
};
-
 
655
 
-
 
656
 
-
 
657
/*
-
 
658
 
508
 
659
 
509
 
660
 
510
/*
661
 
511
/*
662
/*
512
 * Core structure, functions and helpers.
663
 * Core structure, functions and helpers.
Line 522... Line 673...
522
    enum radeon_family          family;
673
    enum radeon_family          family;
523
    unsigned long               flags;
674
    unsigned long               flags;
524
    int                         usec_timeout;
675
    int                         usec_timeout;
525
    enum radeon_pll_errata      pll_errata;
676
    enum radeon_pll_errata      pll_errata;
526
    int                         num_gb_pipes;
677
    int                         num_gb_pipes;
-
 
678
	int				num_z_pipes;
527
    int                         disp_priority;
679
    int                         disp_priority;
528
    /* BIOS */
680
    /* BIOS */
529
    uint8_t                     *bios;
681
    uint8_t                     *bios;
530
    bool                        is_atom_bios;
682
    bool                        is_atom_bios;
531
    uint16_t                    bios_header_start;
683
    uint16_t                    bios_header_start;
Line 532... Line 684...
532
 
684
 
533
//    struct radeon_object        *stollen_vga_memory;
685
//    struct radeon_object        *stollen_vga_memory;
534
    struct fb_info              *fbdev_info;
686
    struct fb_info              *fbdev_info;
535
    struct radeon_object        *fbdev_robj;
687
    struct radeon_object        *fbdev_robj;
536
    struct radeon_framebuffer   *fbdev_rfb;
-
 
537
 
688
    struct radeon_framebuffer   *fbdev_rfb;
538
    /* Register mmio */
689
    /* Register mmio */
539
    unsigned long               rmmio_base;
690
    unsigned long               rmmio_base;
540
    unsigned long               rmmio_size;
691
    unsigned long               rmmio_size;
541
    void                       *rmmio;
-
 
542
 
-
 
543
    radeon_rreg_t               mm_rreg;
-
 
544
    radeon_wreg_t               mm_wreg;
692
    void                       *rmmio;
545
    radeon_rreg_t               mc_rreg;
693
    radeon_rreg_t               mc_rreg;
546
    radeon_wreg_t               mc_wreg;
694
    radeon_wreg_t               mc_wreg;
547
    radeon_rreg_t               pll_rreg;
695
    radeon_rreg_t               pll_rreg;
548
    radeon_wreg_t               pll_wreg;
-
 
549
    radeon_rreg_t               pcie_rreg;
696
    radeon_wreg_t               pll_wreg;
550
    radeon_wreg_t               pcie_wreg;
697
	uint32_t                        pcie_reg_mask;
551
    radeon_rreg_t               pciep_rreg;
698
    radeon_rreg_t               pciep_rreg;
552
    radeon_wreg_t               pciep_wreg;
699
    radeon_wreg_t               pciep_wreg;
553
    struct radeon_clock         clock;
700
    struct radeon_clock         clock;
554
    struct radeon_mc            mc;
701
    struct radeon_mc            mc;
Line 560... Line 707...
560
    struct radeon_cp            cp;
707
    struct radeon_cp            cp;
561
    struct radeon_ib_pool       ib_pool;
708
    struct radeon_ib_pool       ib_pool;
562
//    struct radeon_irq       irq;
709
//    struct radeon_irq       irq;
563
    struct radeon_asic         *asic;
710
    struct radeon_asic         *asic;
564
    struct radeon_gem       gem;
711
    struct radeon_gem       gem;
-
 
712
	struct radeon_pm		pm;
-
 
713
	uint32_t			bios_scratch[RADEON_BIOS_NUM_SCRATCH];
565
//    struct mutex            cs_mutex;
714
//    struct mutex            cs_mutex;
566
    struct radeon_wb        wb;
715
    struct radeon_wb        wb;
-
 
716
	struct radeon_dummy_page	dummy_page;
567
    bool                gpu_lockup;
717
    bool                gpu_lockup;
568
    bool                shutdown;
718
    bool                shutdown;
569
    bool                suspend;
719
    bool                suspend;
-
 
720
	bool				need_dma32;
-
 
721
	bool				new_init_path;
-
 
722
	bool				accel_working;
-
 
723
	struct radeon_surface_reg surface_regs[RADEON_GEM_MAX_SURFACES];
-
 
724
	const struct firmware *me_fw;	/* all family ME firmware */
-
 
725
	const struct firmware *pfp_fw;	/* r6/700 PFP firmware */
-
 
726
	struct r600_blit r600_blit;
570
};
727
};
Line 571... Line 728...
571
 
728
 
572
int radeon_device_init(struct radeon_device *rdev,
729
int radeon_device_init(struct radeon_device *rdev,
573
		       struct drm_device *ddev,
730
		       struct drm_device *ddev,
574
		       struct pci_dev *pdev,
731
		       struct pci_dev *pdev,
575
		       uint32_t flags);
732
		       uint32_t flags);
576
void radeon_device_fini(struct radeon_device *rdev);
733
void radeon_device_fini(struct radeon_device *rdev);
Line 577... Line 734...
577
int radeon_gpu_wait_for_idle(struct radeon_device *rdev);
734
int radeon_gpu_wait_for_idle(struct radeon_device *rdev);
-
 
735
 
-
 
736
/* r600 blit */
-
 
737
int r600_blit_prepare_copy(struct radeon_device *rdev, int size_bytes);
-
 
738
void r600_blit_done_copy(struct radeon_device *rdev, struct radeon_fence *fence);
578
 
739
void r600_kms_blit_copy(struct radeon_device *rdev,
579
#define __iomem
-
 
580
#define __force
-
 
Line 581... Line -...
581
 
-
 
582
 
-
 
583
 
-
 
584
static inline uint8_t __raw_readb(const volatile void __iomem *addr)
-
 
585
{
-
 
586
    return *(const volatile uint8_t __force *) addr;
740
			u64 src_gpu_addr, u64 dst_gpu_addr,
587
}
741
			int size_bytes);
-
 
742
 
588
 
743
static inline uint32_t r100_mm_rreg(struct radeon_device *rdev, uint32_t reg)
-
 
744
{
-
 
745
	if (reg < 0x10000)
-
 
746
		return readl(((void __iomem *)rdev->rmmio) + reg);
589
static inline uint16_t __raw_readw(const volatile void __iomem *addr)
747
	else {
590
{
-
 
591
    return *(const volatile uint16_t __force *) addr;
-
 
592
}
-
 
593
 
-
 
594
static inline uint32_t __raw_readl(const volatile void __iomem *addr)
748
		writel(reg, ((void __iomem *)rdev->rmmio) + RADEON_MM_INDEX);
Line 595... Line -...
595
{
-
 
596
    return *(const volatile uint32_t __force *) addr;
-
 
597
}
-
 
598
 
-
 
599
#define readb __raw_readb
-
 
600
#define readw __raw_readw
-
 
601
#define readl __raw_readl
749
		return readl(((void __iomem *)rdev->rmmio) + RADEON_MM_DATA);
602
 
750
	}
-
 
751
}
603
 
752
 
-
 
753
static inline void r100_mm_wreg(struct radeon_device *rdev, uint32_t reg, uint32_t v)
-
 
754
{
-
 
755
	if (reg < 0x10000)
604
 
756
		writel(v, ((void __iomem *)rdev->rmmio) + reg);
605
static inline void __raw_writeb(uint8_t b, volatile void __iomem *addr)
-
 
606
{
-
 
607
    *(volatile uint8_t __force *) addr = b;
-
 
608
}
-
 
609
 
757
	else {
Line 610... Line -...
610
static inline void __raw_writew(uint16_t b, volatile void __iomem *addr)
-
 
611
{
-
 
612
    *(volatile uint16_t __force *) addr = b;
-
 
613
}
-
 
614
 
-
 
615
static inline void __raw_writel(uint32_t b, volatile void __iomem *addr)
-
 
616
{
-
 
617
    *(volatile uint32_t __force *) addr = b;
-
 
618
}
-
 
619
 
-
 
620
static inline void __raw_writeq(__u64 b, volatile void __iomem *addr)
-
 
621
{
-
 
622
        *(volatile __u64 *)addr = b;
-
 
623
}
-
 
624
 
-
 
625
#define writeb __raw_writeb
-
 
626
#define writew __raw_writew
-
 
627
#define writel __raw_writel
-
 
628
#define writeq __raw_writeq
-
 
629
 
-
 
Line 630... Line 758...
630
//#define writeb(b,addr) *(volatile uint8_t* ) addr = (uint8_t)b
758
		writel(reg, ((void __iomem *)rdev->rmmio) + RADEON_MM_INDEX);
631
//#define writew(b,addr) *(volatile uint16_t*) addr = (uint16_t)b
759
		writel(v, ((void __iomem *)rdev->rmmio) + RADEON_MM_DATA);
632
//#define writel(b,addr) *(volatile uint32_t*) addr = (uint32_t)b
760
	}
633
 
761
}
634
 
762
 
635
 
763
 
636
/*
764
/*
637
 * Registers read & write functions.
765
 * Registers read & write functions.
638
 */
766
 */
639
#define RREG8(reg) readb(((void __iomem *)rdev->rmmio) + (reg))
767
#define RREG8(reg) readb(((void __iomem *)rdev->rmmio) + (reg))
640
#define WREG8(reg, v) writeb(v, ((void __iomem *)rdev->rmmio) + (reg))
768
#define WREG8(reg, v) writeb(v, ((void __iomem *)rdev->rmmio) + (reg))
641
#define RREG32(reg) rdev->mm_rreg(rdev, (reg))
769
#define RREG32(reg) r100_mm_rreg(rdev, (reg))
642
#define WREG32(reg, v) rdev->mm_wreg(rdev, (reg), (v))
770
#define WREG32(reg, v) r100_mm_wreg(rdev, (reg), (v))
643
#define REG_SET(FIELD, v) (((v) << FIELD##_SHIFT) & FIELD##_MASK)
771
#define REG_SET(FIELD, v) (((v) << FIELD##_SHIFT) & FIELD##_MASK)
644
#define REG_GET(FIELD, v) (((v) << FIELD##_SHIFT) & FIELD##_MASK)
772
#define REG_GET(FIELD, v) (((v) << FIELD##_SHIFT) & FIELD##_MASK)
645
#define RREG32_PLL(reg) rdev->pll_rreg(rdev, (reg))
773
#define RREG32_PLL(reg) rdev->pll_rreg(rdev, (reg))
646
#define WREG32_PLL(reg, v) rdev->pll_wreg(rdev, (reg), (v))
774
#define WREG32_PLL(reg, v) rdev->pll_wreg(rdev, (reg), (v))
647
#define RREG32_MC(reg) rdev->mc_rreg(rdev, (reg))
775
#define RREG32_MC(reg) rdev->mc_rreg(rdev, (reg))
648
#define WREG32_MC(reg, v) rdev->mc_wreg(rdev, (reg), (v))
776
#define WREG32_MC(reg, v) rdev->mc_wreg(rdev, (reg), (v))
649
#define RREG32_PCIE(reg) rdev->pcie_rreg(rdev, (reg))
777
#define RREG32_PCIE(reg) rv370_pcie_rreg(rdev, (reg))
Line 661... Line 789...
661
		tmp_ &= (mask);					\
789
		tmp_ &= (mask);					\
662
		tmp_ |= ((val) & ~(mask));			\
790
		tmp_ |= ((val) & ~(mask));			\
663
		WREG32_PLL(reg, tmp_);				\
791
		WREG32_PLL(reg, tmp_);				\
664
	} while (0)
792
	} while (0)
Line -... Line 793...
-
 
793
 
-
 
794
/*
-
 
795
 * Indirect registers accessor
-
 
796
 */
-
 
797
static inline uint32_t rv370_pcie_rreg(struct radeon_device *rdev, uint32_t reg)
-
 
798
{
-
 
799
	uint32_t r;
-
 
800
 
-
 
801
	WREG32(RADEON_PCIE_INDEX, ((reg) & rdev->pcie_reg_mask));
-
 
802
	r = RREG32(RADEON_PCIE_DATA);
-
 
803
	return r;
-
 
804
}
-
 
805
 
-
 
806
static inline void rv370_pcie_wreg(struct radeon_device *rdev, uint32_t reg, uint32_t v)
-
 
807
{
-
 
808
	WREG32(RADEON_PCIE_INDEX, ((reg) & rdev->pcie_reg_mask));
-
 
809
	WREG32(RADEON_PCIE_DATA, (v));
-
 
810
}
-
 
811
 
-
 
812
void r100_pll_errata_after_index(struct radeon_device *rdev);
-
 
813
 
-
 
814
 
-
 
815
 
-
 
816
 
-
 
817
 
-
 
818
 
-
 
819
 
Line 665... Line 820...
665
 
820
 
666
 
821
 
667
#define radeon_PCI_IDS \
822
#define radeon_PCI_IDS \
668
    {0x1002, 0x3150, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_RV380|RADEON_IS_MOBILITY}, \
823
    {0x1002, 0x3150, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_RV380|RADEON_IS_MOBILITY}, \
Line 1073... Line 1228...
1073
 
1228
 
1074
 
1229
 
1075
/*
1230
/*
-
 
1231
 * ASICs helpers.
-
 
1232
 */
1076
 * ASICs helpers.
1233
#define ASIC_IS_RN50(rdev) ((rdev->pdev->device == 0x515e) || \
1077
 */
1234
			    (rdev->pdev->device == 0x5969))
1078
#define ASIC_IS_RV100(rdev) ((rdev->family == CHIP_RV100) || \
1235
#define ASIC_IS_RV100(rdev) ((rdev->family == CHIP_RV100) || \
1079
        (rdev->family == CHIP_RV200) || \
1236
        (rdev->family == CHIP_RV200) || \
1080
        (rdev->family == CHIP_RS100) || \
1237
        (rdev->family == CHIP_RS100) || \
Line 1173... Line 1330...
1173
 
1330
 
1174
/*
1331
/*
1175
 * ASICs macro.
1332
 * ASICs macro.
1176
 */
1333
 */
-
 
1334
#define radeon_init(rdev) (rdev)->asic->init((rdev))
-
 
1335
#define radeon_fini(rdev) (rdev)->asic->fini((rdev))
-
 
1336
#define radeon_resume(rdev) (rdev)->asic->resume((rdev))
1177
#define radeon_init(rdev) (rdev)->asic->init((rdev))
1337
#define radeon_suspend(rdev) (rdev)->asic->suspend((rdev))
1178
#define radeon_cs_parse(p) rdev->asic->cs_parse((p))
1338
#define radeon_cs_parse(p) rdev->asic->cs_parse((p))
1179
#define radeon_errata(rdev) (rdev)->asic->errata((rdev))
1339
#define radeon_errata(rdev) (rdev)->asic->errata((rdev))
-
 
1340
#define radeon_vram_info(rdev) (rdev)->asic->vram_info((rdev))
1180
#define radeon_vram_info(rdev) (rdev)->asic->vram_info((rdev))
1341
#define radeon_vga_set_state(rdev, state) (rdev)->asic->vga_set_state((rdev), (state))
1181
#define radeon_gpu_reset(rdev) (rdev)->asic->gpu_reset((rdev))
1342
#define radeon_gpu_reset(rdev) (rdev)->asic->gpu_reset((rdev))
1182
#define radeon_mc_init(rdev) (rdev)->asic->mc_init((rdev))
1343
#define radeon_mc_init(rdev) (rdev)->asic->mc_init((rdev))
1183
#define radeon_mc_fini(rdev) (rdev)->asic->mc_fini((rdev))
1344
#define radeon_mc_fini(rdev) (rdev)->asic->mc_fini((rdev))
1184
#define radeon_wb_init(rdev) (rdev)->asic->wb_init((rdev))
1345
#define radeon_wb_init(rdev) (rdev)->asic->wb_init((rdev))
-
 
1346
#define radeon_wb_fini(rdev) (rdev)->asic->wb_fini((rdev))
-
 
1347
#define radeon_gpu_gart_init(rdev) (rdev)->asic->gart_init((rdev))
1185
#define radeon_wb_fini(rdev) (rdev)->asic->wb_fini((rdev))
1348
#define radeon_gpu_gart_fini(rdev) (rdev)->asic->gart_fini((rdev))
1186
#define radeon_gart_enable(rdev) (rdev)->asic->gart_enable((rdev))
1349
#define radeon_gart_enable(rdev) (rdev)->asic->gart_enable((rdev))
1187
#define radeon_gart_disable(rdev) (rdev)->asic->gart_disable((rdev))
1350
#define radeon_gart_disable(rdev) (rdev)->asic->gart_disable((rdev))
1188
#define radeon_gart_tlb_flush(rdev) (rdev)->asic->gart_tlb_flush((rdev))
1351
#define radeon_gart_tlb_flush(rdev) (rdev)->asic->gart_tlb_flush((rdev))
1189
#define radeon_gart_set_page(rdev, i, p) (rdev)->asic->gart_set_page((rdev), (i), (p))
1352
#define radeon_gart_set_page(rdev, i, p) (rdev)->asic->gart_set_page((rdev), (i), (p))
1190
#define radeon_cp_init(rdev,rsize) (rdev)->asic->cp_init((rdev), (rsize))
1353
#define radeon_cp_init(rdev,rsize) (rdev)->asic->cp_init((rdev), (rsize))
1191
#define radeon_cp_fini(rdev) (rdev)->asic->cp_fini((rdev))
1354
#define radeon_cp_fini(rdev) (rdev)->asic->cp_fini((rdev))
-
 
1355
#define radeon_cp_disable(rdev) (rdev)->asic->cp_disable((rdev))
1192
#define radeon_cp_disable(rdev) (rdev)->asic->cp_disable((rdev))
1356
#define radeon_cp_commit(rdev) (rdev)->asic->cp_commit((rdev))
-
 
1357
#define radeon_ring_start(rdev) (rdev)->asic->ring_start((rdev))
-
 
1358
#define radeon_ring_test(rdev) (rdev)->asic->ring_test((rdev))
-
 
1359
#define radeon_ring_ib_execute(rdev, ib) (rdev)->asic->ring_ib_execute((rdev), (ib))
1193
#define radeon_ring_start(rdev) (rdev)->asic->ring_start((rdev))
1360
#define radeon_ib_test(rdev) (rdev)->asic->ib_test((rdev))
1194
#define radeon_irq_set(rdev) (rdev)->asic->irq_set((rdev))
1361
#define radeon_irq_set(rdev) (rdev)->asic->irq_set((rdev))
-
 
1362
#define radeon_irq_process(rdev) (rdev)->asic->irq_process((rdev))
1195
#define radeon_irq_process(rdev) (rdev)->asic->irq_process((rdev))
1363
#define radeon_get_vblank_counter(rdev, crtc) (rdev)->asic->get_vblank_counter((rdev), (crtc))
1196
#define radeon_fence_ring_emit(rdev, fence) (rdev)->asic->fence_ring_emit((rdev), (fence))
1364
#define radeon_fence_ring_emit(rdev, fence) (rdev)->asic->fence_ring_emit((rdev), (fence))
1197
#define radeon_copy_blit(rdev, s, d, np, f) (rdev)->asic->copy_blit((rdev), (s), (d), (np), (f))
1365
#define radeon_copy_blit(rdev, s, d, np, f) (rdev)->asic->copy_blit((rdev), (s), (d), (np), (f))
1198
#define radeon_copy_dma(rdev, s, d, np, f) (rdev)->asic->copy_dma((rdev), (s), (d), (np), (f))
1366
#define radeon_copy_dma(rdev, s, d, np, f) (rdev)->asic->copy_dma((rdev), (s), (d), (np), (f))
1199
#define radeon_copy(rdev, s, d, np, f) (rdev)->asic->copy((rdev), (s), (d), (np), (f))
1367
#define radeon_copy(rdev, s, d, np, f) (rdev)->asic->copy((rdev), (s), (d), (np), (f))
1200
#define radeon_set_engine_clock(rdev, e) (rdev)->asic->set_engine_clock((rdev), (e))
1368
#define radeon_set_engine_clock(rdev, e) (rdev)->asic->set_engine_clock((rdev), (e))
1201
#define radeon_set_memory_clock(rdev, e) (rdev)->asic->set_engine_clock((rdev), (e))
1369
#define radeon_set_memory_clock(rdev, e) (rdev)->asic->set_engine_clock((rdev), (e))
1202
#define radeon_set_pcie_lanes(rdev, l) (rdev)->asic->set_pcie_lanes((rdev), (l))
1370
#define radeon_set_pcie_lanes(rdev, l) (rdev)->asic->set_pcie_lanes((rdev), (l))
-
 
1371
#define radeon_set_clock_gating(rdev, e) (rdev)->asic->set_clock_gating((rdev), (e))
-
 
1372
#define radeon_set_surface_reg(rdev, r, f, p, o, s) ((rdev)->asic->set_surface_reg((rdev), (r), (f), (p), (o), (s)))
-
 
1373
#define radeon_clear_surface_reg(rdev, r) ((rdev)->asic->clear_surface_reg((rdev), (r)))
-
 
1374
#define radeon_bandwidth_update(rdev) (rdev)->asic->bandwidth_update((rdev))
-
 
1375
 
-
 
1376
/* Common functions */
-
 
1377
extern int radeon_gart_table_vram_pin(struct radeon_device *rdev);
-
 
1378
extern int radeon_modeset_init(struct radeon_device *rdev);
-
 
1379
extern void radeon_modeset_fini(struct radeon_device *rdev);
-
 
1380
extern bool radeon_card_posted(struct radeon_device *rdev);
-
 
1381
extern int radeon_clocks_init(struct radeon_device *rdev);
-
 
1382
extern void radeon_clocks_fini(struct radeon_device *rdev);
-
 
1383
extern void radeon_scratch_init(struct radeon_device *rdev);
-
 
1384
extern void radeon_surface_init(struct radeon_device *rdev);
-
 
1385
extern int radeon_cs_parser_init(struct radeon_cs_parser *p, void *data);
-
 
1386
 
-
 
1387
/* r100,rv100,rs100,rv200,rs200,r200,rv250,rs300,rv280 */
-
 
1388
struct r100_mc_save {
-
 
1389
	u32	GENMO_WT;
-
 
1390
	u32	CRTC_EXT_CNTL;
-
 
1391
	u32	CRTC_GEN_CNTL;
-
 
1392
	u32	CRTC2_GEN_CNTL;
-
 
1393
	u32	CUR_OFFSET;
-
 
1394
	u32	CUR2_OFFSET;
-
 
1395
};
-
 
1396
extern void r100_cp_disable(struct radeon_device *rdev);
-
 
1397
extern int r100_cp_init(struct radeon_device *rdev, unsigned ring_size);
-
 
1398
extern void r100_cp_fini(struct radeon_device *rdev);
-
 
1399
extern void r100_pci_gart_tlb_flush(struct radeon_device *rdev);
-
 
1400
extern int r100_pci_gart_init(struct radeon_device *rdev);
-
 
1401
extern void r100_pci_gart_fini(struct radeon_device *rdev);
-
 
1402
extern int r100_pci_gart_enable(struct radeon_device *rdev);
-
 
1403
extern void r100_pci_gart_disable(struct radeon_device *rdev);
-
 
1404
extern int r100_pci_gart_set_page(struct radeon_device *rdev, int i, uint64_t addr);
-
 
1405
extern int r100_debugfs_mc_info_init(struct radeon_device *rdev);
-
 
1406
extern int r100_gui_wait_for_idle(struct radeon_device *rdev);
-
 
1407
extern void r100_ib_fini(struct radeon_device *rdev);
-
 
1408
extern int r100_ib_init(struct radeon_device *rdev);
-
 
1409
extern void r100_irq_disable(struct radeon_device *rdev);
-
 
1410
extern int r100_irq_set(struct radeon_device *rdev);
-
 
1411
extern void r100_mc_stop(struct radeon_device *rdev, struct r100_mc_save *save);
-
 
1412
extern void r100_mc_resume(struct radeon_device *rdev, struct r100_mc_save *save);
-
 
1413
extern void r100_vram_init_sizes(struct radeon_device *rdev);
-
 
1414
extern void r100_wb_disable(struct radeon_device *rdev);
-
 
1415
extern void r100_wb_fini(struct radeon_device *rdev);
-
 
1416
extern int r100_wb_init(struct radeon_device *rdev);
-
 
1417
 
-
 
1418
/* r300,r350,rv350,rv370,rv380 */
-
 
1419
extern void r300_set_reg_safe(struct radeon_device *rdev);
-
 
1420
extern void r300_mc_program(struct radeon_device *rdev);
-
 
1421
extern void r300_vram_info(struct radeon_device *rdev);
-
 
1422
extern int rv370_pcie_gart_init(struct radeon_device *rdev);
-
 
1423
extern void rv370_pcie_gart_fini(struct radeon_device *rdev);
-
 
1424
extern int rv370_pcie_gart_enable(struct radeon_device *rdev);
-
 
1425
extern void rv370_pcie_gart_disable(struct radeon_device *rdev);
-
 
1426
 
-
 
1427
/* r420,r423,rv410 */
-
 
1428
extern u32 r420_mc_rreg(struct radeon_device *rdev, u32 reg);
-
 
1429
extern void r420_mc_wreg(struct radeon_device *rdev, u32 reg, u32 v);
-
 
1430
extern int r420_debugfs_pipes_info_init(struct radeon_device *rdev);
-
 
1431
 
-
 
1432
/* rv515 */
-
 
1433
extern void rv515_bandwidth_avivo_update(struct radeon_device *rdev);
-
 
1434
 
-
 
1435
/* rs690, rs740 */
-
 
1436
extern void rs690_line_buffer_adjust(struct radeon_device *rdev,
-
 
1437
					struct drm_display_mode *mode1,
-
 
1438
					struct drm_display_mode *mode2);
-
 
1439
 
-
 
1440
/* r600, rv610, rv630, rv620, rv635, rv670, rs780, rs880 */
-
 
1441
extern bool r600_card_posted(struct radeon_device *rdev);
-
 
1442
extern void r600_cp_stop(struct radeon_device *rdev);
-
 
1443
extern void r600_ring_init(struct radeon_device *rdev, unsigned ring_size);
-
 
1444
extern int r600_cp_resume(struct radeon_device *rdev);
-
 
1445
extern int r600_count_pipe_bits(uint32_t val);
-
 
1446
extern int r600_gart_clear_page(struct radeon_device *rdev, int i);
-
 
1447
extern int r600_mc_wait_for_idle(struct radeon_device *rdev);
-
 
1448
extern int r600_pcie_gart_init(struct radeon_device *rdev);
-
 
1449
extern void r600_pcie_gart_tlb_flush(struct radeon_device *rdev);
-
 
1450
extern int r600_ib_test(struct radeon_device *rdev);
-
 
1451
extern int r600_ring_test(struct radeon_device *rdev);
-
 
1452
extern int r600_wb_init(struct radeon_device *rdev);
-
 
1453
extern void r600_wb_fini(struct radeon_device *rdev);
-
 
1454
extern void r600_scratch_init(struct radeon_device *rdev);
-
 
1455
extern int r600_blit_init(struct radeon_device *rdev);
-
 
1456
extern void r600_blit_fini(struct radeon_device *rdev);
-
 
1457
extern int r600_cp_init_microcode(struct radeon_device *rdev);
-
 
1458
extern int r600_gpu_reset(struct radeon_device *rdev);
-
 
1459
 
-
 
1460
 
-
 
1461
 
-
 
1462
 
-
 
1463
 
-
 
1464
 
Line 1203... Line 1465...
1203
#define radeon_set_clock_gating(rdev, e) (rdev)->asic->set_clock_gating((rdev), (e))
1465
 
Line 1204... Line 1466...
1204
 
1466
 
Line 1210... Line 1472...
1210
resource_size_t
1472
resource_size_t
1211
drm_get_resource_len(struct drm_device *dev, unsigned int resource);
1473
drm_get_resource_len(struct drm_device *dev, unsigned int resource);
Line 1212... Line 1474...
1212
 
1474
 
Line -... Line 1475...
-
 
1475
bool set_mode(struct drm_device *dev, int width, int height);
-
 
1476
 
1213
bool set_mode(struct drm_device *dev, int width, int height);
1477