Subversion Repositories Kolibri OS

Rev

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

Rev 3192 Rev 3764
Line 100... Line 100...
100
extern int radeon_disp_priority;
100
extern int radeon_disp_priority;
101
extern int radeon_hw_i2c;
101
extern int radeon_hw_i2c;
102
extern int radeon_pcie_gen2;
102
extern int radeon_pcie_gen2;
103
extern int radeon_msi;
103
extern int radeon_msi;
104
extern int radeon_lockup_timeout;
104
extern int radeon_lockup_timeout;
105
 
-
 
-
 
105
extern int radeon_fastfb;
Line 106... Line 106...
106
 
106
 
107
 
107
 
108
typedef struct pm_message {
108
typedef struct pm_message {
Line 122... Line 122...
122
static inline u32 ioread32(const volatile void __iomem *addr)
122
static inline u32 ioread32(const volatile void __iomem *addr)
123
{
123
{
124
    return in32((u32)addr);
124
    return in32((u32)addr);
125
}
125
}
Line 126... Line 126...
126
 
126
 
127
static inline void iowrite32(uint32_t b, volatile void __iomem *addr)
127
//static inline void iowrite32(uint32_t b, volatile void __iomem *addr)
128
{
128
//{
129
    out32((u32)addr, b);
129
//    out32((u32)addr, b);
Line 130... Line 130...
130
}
130
//}
131
 
131
 
132
 
132
 
Line 141... Line 141...
141
#define RADEON_DEBUGFS_MAX_COMPONENTS	32
141
#define RADEON_DEBUGFS_MAX_COMPONENTS	32
142
#define RADEONFB_CONN_LIMIT             4
142
#define RADEONFB_CONN_LIMIT             4
143
#define RADEON_BIOS_NUM_SCRATCH		8
143
#define RADEON_BIOS_NUM_SCRATCH		8
Line 144... Line 144...
144
 
144
 
145
/* max number of rings */
145
/* max number of rings */
Line 146... Line 146...
146
#define RADEON_NUM_RINGS			5
146
#define RADEON_NUM_RINGS			6
147
 
147
 
Line 148... Line 148...
148
/* fence seq are set to this number when signaled */
148
/* fence seq are set to this number when signaled */
Line 159... Line 159...
159
/* R600+ has an async dma ring */
159
/* R600+ has an async dma ring */
160
#define R600_RING_TYPE_DMA_INDEX		3
160
#define R600_RING_TYPE_DMA_INDEX		3
161
/* cayman add a second async dma ring */
161
/* cayman add a second async dma ring */
162
#define CAYMAN_RING_TYPE_DMA1_INDEX		4
162
#define CAYMAN_RING_TYPE_DMA1_INDEX		4
Line -... Line 163...
-
 
163
 
-
 
164
/* R600+ */
-
 
165
#define R600_RING_TYPE_UVD_INDEX	5
163
 
166
 
164
/* hardcode those limit for now */
167
/* hardcode those limit for now */
165
#define RADEON_VA_IB_OFFSET			(1 << 20)
168
#define RADEON_VA_IB_OFFSET			(1 << 20)
166
#define RADEON_VA_RESERVED_SIZE		(8 << 20)
169
#define RADEON_VA_RESERVED_SIZE		(8 << 20)
Line 167... Line 170...
167
#define RADEON_IB_VM_MAX_SIZE		(64 << 10)
170
#define RADEON_IB_VM_MAX_SIZE		(64 << 10)
168
 
171
 
169
/* reset flags */
172
/* reset flags */
170
#define RADEON_RESET_GFX			(1 << 0)
173
#define RADEON_RESET_GFX			(1 << 0)
-
 
174
#define RADEON_RESET_COMPUTE			(1 << 1)
-
 
175
#define RADEON_RESET_DMA			(1 << 2)
-
 
176
#define RADEON_RESET_CP				(1 << 3)
-
 
177
#define RADEON_RESET_GRBM			(1 << 4)
-
 
178
#define RADEON_RESET_DMA1			(1 << 5)
-
 
179
#define RADEON_RESET_RLC			(1 << 6)
-
 
180
#define RADEON_RESET_SEM			(1 << 7)
-
 
181
#define RADEON_RESET_IH				(1 << 8)
-
 
182
#define RADEON_RESET_VMC			(1 << 9)
Line 171... Line 183...
171
#define RADEON_RESET_COMPUTE			(1 << 1)
183
#define RADEON_RESET_MC				(1 << 10)
172
#define RADEON_RESET_DMA			(1 << 2)
184
#define RADEON_RESET_DISPLAY			(1 << 11)
173
 
185
 
174
/*
186
/*
Line 225... Line 237...
225
void radeon_pm_compute_clocks(struct radeon_device *rdev);
237
void radeon_pm_compute_clocks(struct radeon_device *rdev);
226
void radeon_pm_suspend(struct radeon_device *rdev);
238
void radeon_pm_suspend(struct radeon_device *rdev);
227
void radeon_pm_resume(struct radeon_device *rdev);
239
void radeon_pm_resume(struct radeon_device *rdev);
228
void radeon_combios_get_power_modes(struct radeon_device *rdev);
240
void radeon_combios_get_power_modes(struct radeon_device *rdev);
229
void radeon_atombios_get_power_modes(struct radeon_device *rdev);
241
void radeon_atombios_get_power_modes(struct radeon_device *rdev);
-
 
242
int radeon_atom_get_clock_dividers(struct radeon_device *rdev,
-
 
243
				   u8 clock_type,
-
 
244
				   u32 clock,
-
 
245
				   bool strobe_mode,
-
 
246
				   struct atom_clock_dividers *dividers);
230
void radeon_atom_set_voltage(struct radeon_device *rdev, u16 voltage_level, u8 voltage_type);
247
void radeon_atom_set_voltage(struct radeon_device *rdev, u16 voltage_level, u8 voltage_type);
231
void rs690_pm_info(struct radeon_device *rdev);
248
void rs690_pm_info(struct radeon_device *rdev);
232
extern int rv6xx_get_temp(struct radeon_device *rdev);
249
extern int rv6xx_get_temp(struct radeon_device *rdev);
233
extern int rv770_get_temp(struct radeon_device *rdev);
250
extern int rv770_get_temp(struct radeon_device *rdev);
234
extern int evergreen_get_temp(struct radeon_device *rdev);
251
extern int evergreen_get_temp(struct radeon_device *rdev);
Line 327... Line 344...
327
/*
344
/*
328
 * TTM.
345
 * TTM.
329
 */
346
 */
330
struct radeon_mman {
347
struct radeon_mman {
331
	struct ttm_bo_global_ref        bo_global_ref;
348
	struct ttm_bo_global_ref        bo_global_ref;
332
//	struct drm_global_reference	mem_global_ref;
349
	struct drm_global_reference	mem_global_ref;
333
	struct ttm_bo_device		bdev;
350
	struct ttm_bo_device		bdev;
334
	bool				mem_global_referenced;
351
	bool				mem_global_referenced;
335
	bool				initialized;
352
	bool				initialized;
336
};
353
};
Line 356... Line 373...
356
struct radeon_bo {
373
struct radeon_bo {
357
	/* Protected by gem.mutex */
374
	/* Protected by gem.mutex */
358
	struct list_head		list;
375
	struct list_head		list;
359
	/* Protected by tbo.reserved */
376
	/* Protected by tbo.reserved */
360
	u32				placements[3];
377
	u32				placements[3];
361
	u32				busy_placements[3];
378
    u32             domain;
362
	struct ttm_placement		placement;
379
	struct ttm_placement		placement;
363
	struct ttm_buffer_object	tbo;
380
	struct ttm_buffer_object	tbo;
364
	struct ttm_bo_kmap_obj		kmap;
381
	struct ttm_bo_kmap_obj		kmap;
365
    unsigned                    pin_count;
382
    unsigned                    pin_count;
366
    void                       *kptr;
383
    void                       *kptr;
Line 375... Line 392...
375
	struct list_head		va;
392
	struct list_head		va;
376
	/* Constant after initialization */
393
	/* Constant after initialization */
377
	struct radeon_device		*rdev;
394
	struct radeon_device		*rdev;
378
	struct drm_gem_object		gem_base;
395
	struct drm_gem_object		gem_base;
Line 379... Line 396...
379
 
396
 
380
    u32                          domain;
-
 
381
	int vmapping_count;
397
	struct ttm_bo_kmap_obj dma_buf_vmap;
382
};
398
};
Line 383... Line 399...
383
#define gem_to_radeon_bo(gobj) container_of((gobj), struct radeon_bo, gem_base)
399
#define gem_to_radeon_bo(gobj) container_of((gobj), struct radeon_bo, gem_base)
384
 
400
 
Line 388... Line 404...
388
	unsigned		rdomain;
404
	unsigned		rdomain;
389
	unsigned		wdomain;
405
	unsigned		wdomain;
390
	u32			tiling_flags;
406
	u32			tiling_flags;
391
};
407
};
Line -... Line 408...
-
 
408
 
-
 
409
int radeon_gem_debugfs_init(struct radeon_device *rdev);
392
 
410
 
393
/* sub-allocation manager, it has to be protected by another lock.
411
/* sub-allocation manager, it has to be protected by another lock.
394
 * By conception this is an helper for other part of the driver
412
 * By conception this is an helper for other part of the driver
395
 * like the indirect buffer or semaphore, which both have their
413
 * like the indirect buffer or semaphore, which both have their
396
 * locking.
414
 * locking.
Line 543... Line 561...
543
	u64			real_vram_size;
561
	u64			real_vram_size;
544
    int                 vram_mtrr;
562
    int                 vram_mtrr;
545
    bool                vram_is_ddr;
563
    bool                vram_is_ddr;
546
	bool                    igp_sideport_enabled;
564
	bool                    igp_sideport_enabled;
547
	u64                     gtt_base_align;
565
	u64                     gtt_base_align;
-
 
566
	u64                     mc_mask;
548
};
567
};
Line 549... Line 568...
549
 
568
 
550
bool radeon_combios_sideport_present(struct radeon_device *rdev);
569
bool radeon_combios_sideport_present(struct radeon_device *rdev);
Line 676... Line 695...
676
    bool                ready;
695
    bool                ready;
677
	u32			ptr_reg_shift;
696
	u32			ptr_reg_shift;
678
	u32			ptr_reg_mask;
697
	u32			ptr_reg_mask;
679
	u32			nop;
698
	u32			nop;
680
	u32			idx;
699
	u32			idx;
-
 
700
	u64			last_semaphore_signal_addr;
-
 
701
	u64			last_semaphore_wait_addr;
681
};
702
};
Line 682... Line 703...
682
 
703
 
683
/*
704
/*
684
 * VM
705
 * VM
Line 792... Line 813...
792
 
813
 
793
int radeon_ib_get(struct radeon_device *rdev, int ring,
814
int radeon_ib_get(struct radeon_device *rdev, int ring,
794
		  struct radeon_ib *ib, struct radeon_vm *vm,
815
		  struct radeon_ib *ib, struct radeon_vm *vm,
795
		  unsigned size);
816
		  unsigned size);
-
 
817
void radeon_ib_free(struct radeon_device *rdev, struct radeon_ib *ib);
796
void radeon_ib_free(struct radeon_device *rdev, struct radeon_ib *ib);
818
void radeon_ib_sync_to(struct radeon_ib *ib, struct radeon_fence *fence);
797
int radeon_ib_schedule(struct radeon_device *rdev, struct radeon_ib *ib,
819
int radeon_ib_schedule(struct radeon_device *rdev, struct radeon_ib *ib,
798
		       struct radeon_ib *const_ib);
820
		       struct radeon_ib *const_ib);
799
int radeon_ib_pool_init(struct radeon_device *rdev);
821
int radeon_ib_pool_init(struct radeon_device *rdev);
800
void radeon_ib_pool_fini(struct radeon_device *rdev);
822
void radeon_ib_pool_fini(struct radeon_device *rdev);
Line 930... Line 952...
930
#define RADEON_WB_CP1_RPTR_OFFSET 1280
952
#define RADEON_WB_CP1_RPTR_OFFSET 1280
931
#define RADEON_WB_CP2_RPTR_OFFSET 1536
953
#define RADEON_WB_CP2_RPTR_OFFSET 1536
932
#define R600_WB_DMA_RPTR_OFFSET   1792
954
#define R600_WB_DMA_RPTR_OFFSET   1792
933
#define R600_WB_IH_WPTR_OFFSET   2048
955
#define R600_WB_IH_WPTR_OFFSET   2048
934
#define CAYMAN_WB_DMA1_RPTR_OFFSET   2304
956
#define CAYMAN_WB_DMA1_RPTR_OFFSET   2304
-
 
957
#define R600_WB_UVD_RPTR_OFFSET  2560
935
#define R600_WB_EVENT_OFFSET     3072
958
#define R600_WB_EVENT_OFFSET     3072
Line 936... Line 959...
936
 
959
 
937
/**
960
/**
938
 * struct radeon_pm - power management datas
961
 * struct radeon_pm - power management datas
Line 1130... Line 1153...
1130
};
1153
};
Line 1131... Line 1154...
1131
 
1154
 
1132
int radeon_pm_get_type_index(struct radeon_device *rdev,
1155
int radeon_pm_get_type_index(struct radeon_device *rdev,
1133
			     enum radeon_pm_state_type ps_type,
1156
			     enum radeon_pm_state_type ps_type,
-
 
1157
			     int instance);
-
 
1158
/*
-
 
1159
 * UVD
-
 
1160
 */
-
 
1161
#define RADEON_MAX_UVD_HANDLES	10
-
 
1162
#define RADEON_UVD_STACK_SIZE	(1024*1024)
-
 
1163
#define RADEON_UVD_HEAP_SIZE	(1024*1024)
-
 
1164
 
-
 
1165
struct radeon_uvd {
-
 
1166
	struct radeon_bo	*vcpu_bo;
-
 
1167
	void			*cpu_addr;
-
 
1168
	uint64_t		gpu_addr;
-
 
1169
	atomic_t		handles[RADEON_MAX_UVD_HANDLES];
-
 
1170
	struct drm_file		*filp[RADEON_MAX_UVD_HANDLES];
-
 
1171
	struct delayed_work	idle_work;
-
 
1172
};
-
 
1173
 
-
 
1174
int radeon_uvd_init(struct radeon_device *rdev);
-
 
1175
void radeon_uvd_fini(struct radeon_device *rdev);
-
 
1176
int radeon_uvd_suspend(struct radeon_device *rdev);
-
 
1177
int radeon_uvd_resume(struct radeon_device *rdev);
-
 
1178
int radeon_uvd_get_create_msg(struct radeon_device *rdev, int ring,
-
 
1179
			      uint32_t handle, struct radeon_fence **fence);
-
 
1180
int radeon_uvd_get_destroy_msg(struct radeon_device *rdev, int ring,
-
 
1181
			       uint32_t handle, struct radeon_fence **fence);
-
 
1182
void radeon_uvd_force_into_uvd_segment(struct radeon_bo *rbo);
-
 
1183
void radeon_uvd_free_handles(struct radeon_device *rdev,
-
 
1184
			     struct drm_file *filp);
-
 
1185
int radeon_uvd_cs_parse(struct radeon_cs_parser *parser);
-
 
1186
void radeon_uvd_note_usage(struct radeon_device *rdev);
-
 
1187
int radeon_uvd_calc_upll_dividers(struct radeon_device *rdev,
-
 
1188
				  unsigned vclk, unsigned dclk,
-
 
1189
				  unsigned vco_min, unsigned vco_max,
-
 
1190
				  unsigned fb_factor, unsigned fb_mask,
-
 
1191
				  unsigned pd_min, unsigned pd_max,
-
 
1192
				  unsigned pd_even,
-
 
1193
				  unsigned *optimal_fb_div,
-
 
1194
				  unsigned *optimal_vclk_div,
-
 
1195
				  unsigned *optimal_dclk_div);
-
 
1196
int radeon_uvd_send_upll_ctlreq(struct radeon_device *rdev,
Line 1134... Line 1197...
1134
			     int instance);
1197
                                unsigned cg_upll_func_cntl);
1135
 
1198
 
1136
struct r600_audio {
1199
struct r600_audio {
1137
	int			channels;
1200
	int			channels;
Line 1159... Line 1222...
1159
	void (*ioctl_wait_idle)(struct radeon_device *rdev, struct radeon_bo *bo);
1222
	void (*ioctl_wait_idle)(struct radeon_device *rdev, struct radeon_bo *bo);
1160
	/* check if 3D engine is idle */
1223
	/* check if 3D engine is idle */
1161
	bool (*gui_idle)(struct radeon_device *rdev);
1224
	bool (*gui_idle)(struct radeon_device *rdev);
1162
	/* wait for mc_idle */
1225
	/* wait for mc_idle */
1163
	int (*mc_wait_for_idle)(struct radeon_device *rdev);
1226
	int (*mc_wait_for_idle)(struct radeon_device *rdev);
-
 
1227
	/* get the reference clock */
-
 
1228
	u32 (*get_xclk)(struct radeon_device *rdev);
-
 
1229
	/* get the gpu clock counter */
-
 
1230
	uint64_t (*get_gpu_clock_counter)(struct radeon_device *rdev);
1164
	/* gart */
1231
	/* gart */
1165
	struct {
1232
	struct {
1166
		void (*tlb_flush)(struct radeon_device *rdev);
1233
		void (*tlb_flush)(struct radeon_device *rdev);
1167
		int (*set_page)(struct radeon_device *rdev, int i, uint64_t addr);
1234
		int (*set_page)(struct radeon_device *rdev, int i, uint64_t addr);
1168
	} gart;
1235
	} gart;
1169
	struct {
1236
	struct {
1170
		int (*init)(struct radeon_device *rdev);
1237
		int (*init)(struct radeon_device *rdev);
1171
		void (*fini)(struct radeon_device *rdev);
1238
		void (*fini)(struct radeon_device *rdev);
Line 1172... Line 1239...
1172
 
1239
 
1173
		u32 pt_ring_index;
1240
		u32 pt_ring_index;
-
 
1241
		void (*set_page)(struct radeon_device *rdev,
-
 
1242
				 struct radeon_ib *ib,
1174
		void (*set_page)(struct radeon_device *rdev, uint64_t pe,
1243
				 uint64_t pe,
1175
				 uint64_t addr, unsigned count,
1244
				 uint64_t addr, unsigned count,
1176
				 uint32_t incr, uint32_t flags);
1245
				 uint32_t incr, uint32_t flags);
1177
	} vm;
1246
	} vm;
1178
	/* ring specific callbacks */
1247
	/* ring specific callbacks */
Line 1204... Line 1273...
1204
		void (*wait_for_vblank)(struct radeon_device *rdev, int crtc);
1273
		void (*wait_for_vblank)(struct radeon_device *rdev, int crtc);
1205
		/* set backlight level */
1274
		/* set backlight level */
1206
		void (*set_backlight_level)(struct radeon_encoder *radeon_encoder, u8 level);
1275
		void (*set_backlight_level)(struct radeon_encoder *radeon_encoder, u8 level);
1207
		/* get backlight level */
1276
		/* get backlight level */
1208
		u8 (*get_backlight_level)(struct radeon_encoder *radeon_encoder);
1277
		u8 (*get_backlight_level)(struct radeon_encoder *radeon_encoder);
-
 
1278
		/* audio callbacks */
-
 
1279
		void (*hdmi_enable)(struct drm_encoder *encoder, bool enable);
-
 
1280
		void (*hdmi_setmode)(struct drm_encoder *encoder, struct drm_display_mode *mode);
1209
	} display;
1281
	} display;
1210
	/* copy functions for bo handling */
1282
	/* copy functions for bo handling */
1211
	struct {
1283
	struct {
1212
		int (*blit)(struct radeon_device *rdev,
1284
		int (*blit)(struct radeon_device *rdev,
1213
			 uint64_t src_offset,
1285
			 uint64_t src_offset,
Line 1256... Line 1328...
1256
	uint32_t (*get_memory_clock)(struct radeon_device *rdev);
1328
	uint32_t (*get_memory_clock)(struct radeon_device *rdev);
1257
	void (*set_memory_clock)(struct radeon_device *rdev, uint32_t mem_clock);
1329
	void (*set_memory_clock)(struct radeon_device *rdev, uint32_t mem_clock);
1258
	int (*get_pcie_lanes)(struct radeon_device *rdev);
1330
	int (*get_pcie_lanes)(struct radeon_device *rdev);
1259
	void (*set_pcie_lanes)(struct radeon_device *rdev, int lanes);
1331
	void (*set_pcie_lanes)(struct radeon_device *rdev, int lanes);
1260
	void (*set_clock_gating)(struct radeon_device *rdev, int enable);
1332
	void (*set_clock_gating)(struct radeon_device *rdev, int enable);
-
 
1333
		int (*set_uvd_clocks)(struct radeon_device *rdev, u32 vclk, u32 dclk);
1261
	} pm;
1334
	} pm;
1262
	/* pageflipping */
1335
	/* pageflipping */
1263
	struct {
1336
	struct {
1264
	void (*pre_page_flip)(struct radeon_device *rdev, int crtc);
1337
	void (*pre_page_flip)(struct radeon_device *rdev, int crtc);
1265
	u32 (*page_flip)(struct radeon_device *rdev, int crtc, u64 crtc_base);
1338
	u32 (*page_flip)(struct radeon_device *rdev, int crtc, u64 crtc_base);
Line 1418... Line 1491...
1418
	unsigned shader_engine_tile_size;
1491
	unsigned shader_engine_tile_size;
1419
	unsigned num_gpus;
1492
	unsigned num_gpus;
1420
	unsigned multi_gpu_tile_size;
1493
	unsigned multi_gpu_tile_size;
Line 1421... Line 1494...
1421
 
1494
 
-
 
1495
	unsigned tile_config;
1422
	unsigned tile_config;
1496
	uint32_t tile_mode_array[32];
Line 1423... Line 1497...
1423
};
1497
};
1424
 
1498
 
1425
union radeon_asic_config {
1499
union radeon_asic_config {
Line 1503... Line 1577...
1503
	struct radeon_sa_manager	ring_tmp_bo;
1577
	struct radeon_sa_manager	ring_tmp_bo;
1504
    struct radeon_irq       irq;
1578
    struct radeon_irq       irq;
1505
    struct radeon_asic         *asic;
1579
    struct radeon_asic         *asic;
1506
    struct radeon_gem       gem;
1580
    struct radeon_gem       gem;
1507
	struct radeon_pm		pm;
1581
	struct radeon_pm		pm;
-
 
1582
	struct radeon_uvd		uvd;
1508
	uint32_t			bios_scratch[RADEON_BIOS_NUM_SCRATCH];
1583
	uint32_t			bios_scratch[RADEON_BIOS_NUM_SCRATCH];
1509
    struct radeon_wb        wb;
1584
    struct radeon_wb        wb;
1510
	struct radeon_dummy_page	dummy_page;
1585
	struct radeon_dummy_page	dummy_page;
1511
    bool                shutdown;
1586
    bool                shutdown;
1512
    bool                suspend;
1587
    bool                suspend;
1513
	bool				need_dma32;
1588
	bool				need_dma32;
1514
	bool				accel_working;
1589
	bool				accel_working;
-
 
1590
	bool				fastfb_working; /* IGP feature*/
1515
	struct radeon_surface_reg surface_regs[RADEON_GEM_MAX_SURFACES];
1591
	struct radeon_surface_reg surface_regs[RADEON_GEM_MAX_SURFACES];
1516
	const struct firmware *me_fw;	/* all family ME firmware */
1592
	const struct firmware *me_fw;	/* all family ME firmware */
1517
	const struct firmware *pfp_fw;	/* r6/700 PFP firmware */
1593
	const struct firmware *pfp_fw;	/* r6/700 PFP firmware */
1518
	const struct firmware *rlc_fw;	/* r6/700 RLC firmware */
1594
	const struct firmware *rlc_fw;	/* r6/700 RLC firmware */
1519
	const struct firmware *mc_fw;	/* NI MC firmware */
1595
	const struct firmware *mc_fw;	/* NI MC firmware */
1520
	const struct firmware *ce_fw;	/* SI CE firmware */
1596
	const struct firmware *ce_fw;	/* SI CE firmware */
-
 
1597
	const struct firmware *uvd_fw;	/* UVD firmware */
1521
	struct r600_blit r600_blit;
1598
	struct r600_blit r600_blit;
1522
	struct r600_vram_scratch vram_scratch;
1599
	struct r600_vram_scratch vram_scratch;
1523
	int msi_enabled; /* msi enabled */
1600
	int msi_enabled; /* msi enabled */
1524
	struct r600_ih ih; /* r6/700 interrupt ring */
1601
	struct r600_ih ih; /* r6/700 interrupt ring */
1525
	struct si_rlc rlc;
1602
	struct si_rlc rlc;
1526
//	struct work_struct hotplug_work;
1603
//	struct work_struct hotplug_work;
1527
//	struct work_struct audio_work;
1604
//	struct work_struct audio_work;
1528
	int num_crtc; /* number of crtcs */
1605
	int num_crtc; /* number of crtcs */
1529
	struct mutex dc_hw_i2c_mutex; /* display controller hw i2c mutex */
1606
	struct mutex dc_hw_i2c_mutex; /* display controller hw i2c mutex */
1530
	bool			audio_enabled;
1607
	bool			audio_enabled;
-
 
1608
	bool has_uvd;
1531
//   struct r600_audio audio_status; /* audio stuff */
1609
//   struct r600_audio audio_status; /* audio stuff */
1532
//   struct notifier_block acpi_nb;
1610
//   struct notifier_block acpi_nb;
1533
	/* only one userspace can use Hyperz features or CMASK at a time */
1611
	/* only one userspace can use Hyperz features or CMASK at a time */
1534
//	struct drm_file *hyperz_filp;
1612
//	struct drm_file *hyperz_filp;
1535
//	struct drm_file *cmask_filp;
1613
//	struct drm_file *cmask_filp;
Line 1583... Line 1661...
1583
#define WREG32_PLL(reg, v) rdev->pll_wreg(rdev, (reg), (v))
1661
#define WREG32_PLL(reg, v) rdev->pll_wreg(rdev, (reg), (v))
1584
#define RREG32_MC(reg) rdev->mc_rreg(rdev, (reg))
1662
#define RREG32_MC(reg) rdev->mc_rreg(rdev, (reg))
1585
#define WREG32_MC(reg, v) rdev->mc_wreg(rdev, (reg), (v))
1663
#define WREG32_MC(reg, v) rdev->mc_wreg(rdev, (reg), (v))
1586
#define RREG32_PCIE(reg) rv370_pcie_rreg(rdev, (reg))
1664
#define RREG32_PCIE(reg) rv370_pcie_rreg(rdev, (reg))
1587
#define WREG32_PCIE(reg, v) rv370_pcie_wreg(rdev, (reg), (v))
1665
#define WREG32_PCIE(reg, v) rv370_pcie_wreg(rdev, (reg), (v))
1588
#define RREG32_PCIE_P(reg) rdev->pciep_rreg(rdev, (reg))
1666
#define RREG32_PCIE_PORT(reg) rdev->pciep_rreg(rdev, (reg))
1589
#define WREG32_PCIE_P(reg, v) rdev->pciep_wreg(rdev, (reg), (v))
1667
#define WREG32_PCIE_PORT(reg, v) rdev->pciep_wreg(rdev, (reg), (v))
1590
#define WREG32_P(reg, val, mask)				\
1668
#define WREG32_P(reg, val, mask)				\
1591
	do {							\
1669
	do {							\
1592
		uint32_t tmp_ = RREG32(reg);			\
1670
		uint32_t tmp_ = RREG32(reg);			\
1593
		tmp_ &= (mask);					\
1671
		tmp_ &= (mask);					\
1594
		tmp_ |= ((val) & ~(mask));			\
1672
		tmp_ |= ((val) & ~(mask));			\
1595
		WREG32(reg, tmp_);				\
1673
		WREG32(reg, tmp_);				\
1596
	} while (0)
1674
	} while (0)
-
 
1675
#define WREG32_AND(reg, and) WREG32_P(reg, 0, and)
-
 
1676
#define WREG32_OR(reg, or) WREG32_P(reg, or, ~or)
1597
#define WREG32_PLL_P(reg, val, mask)				\
1677
#define WREG32_PLL_P(reg, val, mask)				\
1598
	do {							\
1678
	do {							\
1599
		uint32_t tmp_ = RREG32_PLL(reg);		\
1679
		uint32_t tmp_ = RREG32_PLL(reg);		\
1600
		tmp_ &= (mask);					\
1680
		tmp_ &= (mask);					\
1601
		tmp_ |= ((val) & ~(mask));			\
1681
		tmp_ |= ((val) & ~(mask));			\
Line 1666... Line 1746...
1666
			     (rdev->flags & RADEON_IS_IGP))
1746
			     (rdev->flags & RADEON_IS_IGP))
1667
#define ASIC_IS_DCE5(rdev) ((rdev->family >= CHIP_BARTS))
1747
#define ASIC_IS_DCE5(rdev) ((rdev->family >= CHIP_BARTS))
1668
#define ASIC_IS_DCE6(rdev) ((rdev->family >= CHIP_ARUBA))
1748
#define ASIC_IS_DCE6(rdev) ((rdev->family >= CHIP_ARUBA))
1669
#define ASIC_IS_DCE61(rdev) ((rdev->family >= CHIP_ARUBA) && \
1749
#define ASIC_IS_DCE61(rdev) ((rdev->family >= CHIP_ARUBA) && \
1670
			     (rdev->flags & RADEON_IS_IGP))
1750
			     (rdev->flags & RADEON_IS_IGP))
-
 
1751
#define ASIC_IS_DCE64(rdev) ((rdev->family == CHIP_OLAND))
-
 
1752
#define ASIC_IS_NODCE(rdev) ((rdev->family == CHIP_HAINAN))
Line 1671... Line 1753...
1671
 
1753
 
1672
/*
1754
/*
1673
 * BIOS helpers.
1755
 * BIOS helpers.
1674
 */
1756
 */
Line 1710... Line 1792...
1710
#define radeon_asic_reset(rdev) (rdev)->asic->asic_reset((rdev))
1792
#define radeon_asic_reset(rdev) (rdev)->asic->asic_reset((rdev))
1711
#define radeon_gart_tlb_flush(rdev) (rdev)->asic->gart.tlb_flush((rdev))
1793
#define radeon_gart_tlb_flush(rdev) (rdev)->asic->gart.tlb_flush((rdev))
1712
#define radeon_gart_set_page(rdev, i, p) (rdev)->asic->gart.set_page((rdev), (i), (p))
1794
#define radeon_gart_set_page(rdev, i, p) (rdev)->asic->gart.set_page((rdev), (i), (p))
1713
#define radeon_asic_vm_init(rdev) (rdev)->asic->vm.init((rdev))
1795
#define radeon_asic_vm_init(rdev) (rdev)->asic->vm.init((rdev))
1714
#define radeon_asic_vm_fini(rdev) (rdev)->asic->vm.fini((rdev))
1796
#define radeon_asic_vm_fini(rdev) (rdev)->asic->vm.fini((rdev))
1715
#define radeon_asic_vm_set_page(rdev, pe, addr, count, incr, flags) ((rdev)->asic->vm.set_page((rdev), (pe), (addr), (count), (incr), (flags)))
1797
#define radeon_asic_vm_set_page(rdev, ib, pe, addr, count, incr, flags) ((rdev)->asic->vm.set_page((rdev), (ib), (pe), (addr), (count), (incr), (flags)))
1716
#define radeon_ring_start(rdev, r, cp) (rdev)->asic->ring[(r)].ring_start((rdev), (cp))
1798
#define radeon_ring_start(rdev, r, cp) (rdev)->asic->ring[(r)].ring_start((rdev), (cp))
1717
#define radeon_ring_test(rdev, r, cp) (rdev)->asic->ring[(r)].ring_test((rdev), (cp))
1799
#define radeon_ring_test(rdev, r, cp) (rdev)->asic->ring[(r)].ring_test((rdev), (cp))
1718
#define radeon_ib_test(rdev, r, cp) (rdev)->asic->ring[(r)].ib_test((rdev), (cp))
1800
#define radeon_ib_test(rdev, r, cp) (rdev)->asic->ring[(r)].ib_test((rdev), (cp))
1719
#define radeon_ring_ib_execute(rdev, r, ib) (rdev)->asic->ring[(r)].ib_execute((rdev), (ib))
1801
#define radeon_ring_ib_execute(rdev, r, ib) (rdev)->asic->ring[(r)].ib_execute((rdev), (ib))
1720
#define radeon_ring_ib_parse(rdev, r, ib) (rdev)->asic->ring[(r)].ib_parse((rdev), (ib))
1802
#define radeon_ring_ib_parse(rdev, r, ib) (rdev)->asic->ring[(r)].ib_parse((rdev), (ib))
Line 1723... Line 1805...
1723
#define radeon_irq_set(rdev) (rdev)->asic->irq.set((rdev))
1805
#define radeon_irq_set(rdev) (rdev)->asic->irq.set((rdev))
1724
#define radeon_irq_process(rdev) (rdev)->asic->irq.process((rdev))
1806
#define radeon_irq_process(rdev) (rdev)->asic->irq.process((rdev))
1725
#define radeon_get_vblank_counter(rdev, crtc) (rdev)->asic->display.get_vblank_counter((rdev), (crtc))
1807
#define radeon_get_vblank_counter(rdev, crtc) (rdev)->asic->display.get_vblank_counter((rdev), (crtc))
1726
#define radeon_set_backlight_level(rdev, e, l) (rdev)->asic->display.set_backlight_level((e), (l))
1808
#define radeon_set_backlight_level(rdev, e, l) (rdev)->asic->display.set_backlight_level((e), (l))
1727
#define radeon_get_backlight_level(rdev, e) (rdev)->asic->display.get_backlight_level((e))
1809
#define radeon_get_backlight_level(rdev, e) (rdev)->asic->display.get_backlight_level((e))
-
 
1810
#define radeon_hdmi_enable(rdev, e, b) (rdev)->asic->display.hdmi_enable((e), (b))
-
 
1811
#define radeon_hdmi_setmode(rdev, e, m) (rdev)->asic->display.hdmi_setmode((e), (m))
1728
#define radeon_fence_ring_emit(rdev, r, fence) (rdev)->asic->ring[(r)].emit_fence((rdev), (fence))
1812
#define radeon_fence_ring_emit(rdev, r, fence) (rdev)->asic->ring[(r)].emit_fence((rdev), (fence))
1729
#define radeon_semaphore_ring_emit(rdev, r, cp, semaphore, emit_wait) (rdev)->asic->ring[(r)].emit_semaphore((rdev), (cp), (semaphore), (emit_wait))
1813
#define radeon_semaphore_ring_emit(rdev, r, cp, semaphore, emit_wait) (rdev)->asic->ring[(r)].emit_semaphore((rdev), (cp), (semaphore), (emit_wait))
1730
#define radeon_copy_blit(rdev, s, d, np, f) (rdev)->asic->copy.blit((rdev), (s), (d), (np), (f))
1814
#define radeon_copy_blit(rdev, s, d, np, f) (rdev)->asic->copy.blit((rdev), (s), (d), (np), (f))
1731
#define radeon_copy_dma(rdev, s, d, np, f) (rdev)->asic->copy.dma((rdev), (s), (d), (np), (f))
1815
#define radeon_copy_dma(rdev, s, d, np, f) (rdev)->asic->copy.dma((rdev), (s), (d), (np), (f))
1732
#define radeon_copy(rdev, s, d, np, f) (rdev)->asic->copy.copy((rdev), (s), (d), (np), (f))
1816
#define radeon_copy(rdev, s, d, np, f) (rdev)->asic->copy.copy((rdev), (s), (d), (np), (f))
Line 1738... Line 1822...
1738
#define radeon_get_memory_clock(rdev) (rdev)->asic->pm.get_memory_clock((rdev))
1822
#define radeon_get_memory_clock(rdev) (rdev)->asic->pm.get_memory_clock((rdev))
1739
#define radeon_set_memory_clock(rdev, e) (rdev)->asic->pm.set_memory_clock((rdev), (e))
1823
#define radeon_set_memory_clock(rdev, e) (rdev)->asic->pm.set_memory_clock((rdev), (e))
1740
#define radeon_get_pcie_lanes(rdev) (rdev)->asic->pm.get_pcie_lanes((rdev))
1824
#define radeon_get_pcie_lanes(rdev) (rdev)->asic->pm.get_pcie_lanes((rdev))
1741
#define radeon_set_pcie_lanes(rdev, l) (rdev)->asic->pm.set_pcie_lanes((rdev), (l))
1825
#define radeon_set_pcie_lanes(rdev, l) (rdev)->asic->pm.set_pcie_lanes((rdev), (l))
1742
#define radeon_set_clock_gating(rdev, e) (rdev)->asic->pm.set_clock_gating((rdev), (e))
1826
#define radeon_set_clock_gating(rdev, e) (rdev)->asic->pm.set_clock_gating((rdev), (e))
-
 
1827
#define radeon_set_uvd_clocks(rdev, v, d) (rdev)->asic->pm.set_uvd_clocks((rdev), (v), (d))
1743
#define radeon_set_surface_reg(rdev, r, f, p, o, s) ((rdev)->asic->surface.set_reg((rdev), (r), (f), (p), (o), (s)))
1828
#define radeon_set_surface_reg(rdev, r, f, p, o, s) ((rdev)->asic->surface.set_reg((rdev), (r), (f), (p), (o), (s)))
1744
#define radeon_clear_surface_reg(rdev, r) ((rdev)->asic->surface.clear_reg((rdev), (r)))
1829
#define radeon_clear_surface_reg(rdev, r) ((rdev)->asic->surface.clear_reg((rdev), (r)))
1745
#define radeon_bandwidth_update(rdev) (rdev)->asic->display.bandwidth_update((rdev))
1830
#define radeon_bandwidth_update(rdev) (rdev)->asic->display.bandwidth_update((rdev))
1746
#define radeon_hpd_init(rdev) (rdev)->asic->hpd.init((rdev))
1831
#define radeon_hpd_init(rdev) (rdev)->asic->hpd.init((rdev))
1747
#define radeon_hpd_fini(rdev) (rdev)->asic->hpd.fini((rdev))
1832
#define radeon_hpd_fini(rdev) (rdev)->asic->hpd.fini((rdev))
Line 1756... Line 1841...
1756
#define radeon_pre_page_flip(rdev, crtc) (rdev)->asic->pflip.pre_page_flip((rdev), (crtc))
1841
#define radeon_pre_page_flip(rdev, crtc) (rdev)->asic->pflip.pre_page_flip((rdev), (crtc))
1757
#define radeon_page_flip(rdev, crtc, base) (rdev)->asic->pflip.page_flip((rdev), (crtc), (base))
1842
#define radeon_page_flip(rdev, crtc, base) (rdev)->asic->pflip.page_flip((rdev), (crtc), (base))
1758
#define radeon_post_page_flip(rdev, crtc) (rdev)->asic->pflip.post_page_flip((rdev), (crtc))
1843
#define radeon_post_page_flip(rdev, crtc) (rdev)->asic->pflip.post_page_flip((rdev), (crtc))
1759
#define radeon_wait_for_vblank(rdev, crtc) (rdev)->asic->display.wait_for_vblank((rdev), (crtc))
1844
#define radeon_wait_for_vblank(rdev, crtc) (rdev)->asic->display.wait_for_vblank((rdev), (crtc))
1760
#define radeon_mc_wait_for_idle(rdev) (rdev)->asic->mc_wait_for_idle((rdev))
1845
#define radeon_mc_wait_for_idle(rdev) (rdev)->asic->mc_wait_for_idle((rdev))
-
 
1846
#define radeon_get_xclk(rdev) (rdev)->asic->get_xclk((rdev))
-
 
1847
#define radeon_get_gpu_clock_counter(rdev) (rdev)->asic->get_gpu_clock_counter((rdev))
Line 1761... Line 1848...
1761
 
1848
 
1762
/* Common functions */
1849
/* Common functions */
1763
/* AGP */
1850
/* AGP */
-
 
1851
extern int radeon_gpu_reset(struct radeon_device *rdev);
1764
extern int radeon_gpu_reset(struct radeon_device *rdev);
1852
extern void r600_set_bios_scratch_engine_hung(struct radeon_device *rdev, bool hung);
1765
extern void radeon_agp_disable(struct radeon_device *rdev);
1853
extern void radeon_agp_disable(struct radeon_device *rdev);
1766
extern int radeon_modeset_init(struct radeon_device *rdev);
1854
extern int radeon_modeset_init(struct radeon_device *rdev);
1767
extern void radeon_modeset_fini(struct radeon_device *rdev);
1855
extern void radeon_modeset_fini(struct radeon_device *rdev);
1768
extern bool radeon_card_posted(struct radeon_device *rdev);
1856
extern bool radeon_card_posted(struct radeon_device *rdev);
Line 1782... Line 1870...
1782
extern void radeon_vram_location(struct radeon_device *rdev, struct radeon_mc *mc, u64 base);
1870
extern void radeon_vram_location(struct radeon_device *rdev, struct radeon_mc *mc, u64 base);
1783
extern void radeon_gtt_location(struct radeon_device *rdev, struct radeon_mc *mc);
1871
extern void radeon_gtt_location(struct radeon_device *rdev, struct radeon_mc *mc);
1784
extern int radeon_resume_kms(struct drm_device *dev);
1872
extern int radeon_resume_kms(struct drm_device *dev);
1785
extern int radeon_suspend_kms(struct drm_device *dev, pm_message_t state);
1873
extern int radeon_suspend_kms(struct drm_device *dev, pm_message_t state);
1786
extern void radeon_ttm_set_active_vram_size(struct radeon_device *rdev, u64 size);
1874
extern void radeon_ttm_set_active_vram_size(struct radeon_device *rdev, u64 size);
-
 
1875
extern void radeon_program_register_sequence(struct radeon_device *rdev,
-
 
1876
					     const u32 *registers,
-
 
1877
					     const u32 array_size);
Line 1787... Line 1878...
1787
 
1878
 
1788
/*
1879
/*
1789
 * vm
1880
 * vm
1790
 */
1881
 */
Line 1854... Line 1945...
1854
 
1945
 
Line 1855... Line 1946...
1855
};
1946
};
Line 1856... Line -...
1856
 
-
 
1857
extern struct radeon_hdmi_acr r600_hdmi_acr(uint32_t clock);
-
 
1858
 
-
 
1859
extern void r600_hdmi_enable(struct drm_encoder *encoder);
1947
 
1860
extern void r600_hdmi_disable(struct drm_encoder *encoder);
1948
extern struct radeon_hdmi_acr r600_hdmi_acr(uint32_t clock);
1861
extern void r600_hdmi_setmode(struct drm_encoder *encoder, struct drm_display_mode *mode);
1949
 
1862
extern u32 r6xx_remap_render_backend(struct radeon_device *rdev,
1950
extern u32 r6xx_remap_render_backend(struct radeon_device *rdev,
1863
				     u32 tiling_pipe_num,
1951
				     u32 tiling_pipe_num,
Line 1864... Line 1952...
1864
				     u32 max_rb_num,
1952
				     u32 max_rb_num,
1865
				     u32 total_max_rb_num,
1953
				     u32 total_max_rb_num,
1866
				     u32 enabled_rb_mask);
1954
				     u32 enabled_rb_mask);
Line 1867... Line -...
1867
 
-
 
1868
/*
-
 
1869
 * evergreen functions used by radeon_encoder.c
1955
 
1870
 */
1956
/*
Line 1871... Line 1957...
1871
 
1957
 * evergreen functions used by radeon_encoder.c
1872
extern void evergreen_hdmi_setmode(struct drm_encoder *encoder, struct drm_display_mode *mode);
1958
 */
Line 1894... Line 1980...
1894
 
1980
 
1895
bool set_mode(struct drm_device *dev, struct drm_connector *connector,
1981
bool set_mode(struct drm_device *dev, struct drm_connector *connector,
Line 1896... Line 1982...
1896
              videomode_t *mode, bool strict);
1982
              videomode_t *mode, bool strict);
1897
 
1983
 
-
 
1984
 
Line 1898... Line 1985...
1898
 
1985
#ifndef __TTM__