diff options
Diffstat (limited to 'drivers/gpu/drm/nouveau/nouveau_drv.h')
-rw-r--r-- | drivers/gpu/drm/nouveau/nouveau_drv.h | 208 |
1 files changed, 83 insertions, 125 deletions
diff --git a/drivers/gpu/drm/nouveau/nouveau_drv.h b/drivers/gpu/drm/nouveau/nouveau_drv.h index a76514a209b3..9c56331941e2 100644 --- a/drivers/gpu/drm/nouveau/nouveau_drv.h +++ b/drivers/gpu/drm/nouveau/nouveau_drv.h | |||
@@ -150,13 +150,12 @@ enum nouveau_flags { | |||
150 | 150 | ||
151 | #define NVOBJ_ENGINE_SW 0 | 151 | #define NVOBJ_ENGINE_SW 0 |
152 | #define NVOBJ_ENGINE_GR 1 | 152 | #define NVOBJ_ENGINE_GR 1 |
153 | #define NVOBJ_ENGINE_PPP 2 | 153 | #define NVOBJ_ENGINE_CRYPT 2 |
154 | #define NVOBJ_ENGINE_COPY 3 | 154 | #define NVOBJ_ENGINE_COPY0 3 |
155 | #define NVOBJ_ENGINE_VP 4 | 155 | #define NVOBJ_ENGINE_COPY1 4 |
156 | #define NVOBJ_ENGINE_CRYPT 5 | 156 | #define NVOBJ_ENGINE_MPEG 5 |
157 | #define NVOBJ_ENGINE_BSP 6 | 157 | #define NVOBJ_ENGINE_DISPLAY 15 |
158 | #define NVOBJ_ENGINE_DISPLAY 0xcafe0001 | 158 | #define NVOBJ_ENGINE_NR 16 |
159 | #define NVOBJ_ENGINE_INT 0xdeadbeef | ||
160 | 159 | ||
161 | #define NVOBJ_FLAG_DONT_MAP (1 << 0) | 160 | #define NVOBJ_FLAG_DONT_MAP (1 << 0) |
162 | #define NVOBJ_FLAG_ZERO_ALLOC (1 << 1) | 161 | #define NVOBJ_FLAG_ZERO_ALLOC (1 << 1) |
@@ -245,11 +244,8 @@ struct nouveau_channel { | |||
245 | struct nouveau_gpuobj *cache; | 244 | struct nouveau_gpuobj *cache; |
246 | void *fifo_priv; | 245 | void *fifo_priv; |
247 | 246 | ||
248 | /* PGRAPH context */ | 247 | /* Execution engine contexts */ |
249 | /* XXX may be merge 2 pointers as private data ??? */ | 248 | void *engctx[NVOBJ_ENGINE_NR]; |
250 | struct nouveau_gpuobj *ramin_grctx; | ||
251 | struct nouveau_gpuobj *crypt_ctx; | ||
252 | void *pgraph_ctx; | ||
253 | 249 | ||
254 | /* NV50 VM */ | 250 | /* NV50 VM */ |
255 | struct nouveau_vm *vm; | 251 | struct nouveau_vm *vm; |
@@ -298,6 +294,18 @@ struct nouveau_channel { | |||
298 | } debugfs; | 294 | } debugfs; |
299 | }; | 295 | }; |
300 | 296 | ||
297 | struct nouveau_exec_engine { | ||
298 | void (*destroy)(struct drm_device *, int engine); | ||
299 | int (*init)(struct drm_device *, int engine); | ||
300 | int (*fini)(struct drm_device *, int engine); | ||
301 | int (*context_new)(struct nouveau_channel *, int engine); | ||
302 | void (*context_del)(struct nouveau_channel *, int engine); | ||
303 | int (*object_new)(struct nouveau_channel *, int engine, | ||
304 | u32 handle, u16 class); | ||
305 | void (*set_tile_region)(struct drm_device *dev, int i); | ||
306 | void (*tlb_flush)(struct drm_device *, int engine); | ||
307 | }; | ||
308 | |||
301 | struct nouveau_instmem_engine { | 309 | struct nouveau_instmem_engine { |
302 | void *priv; | 310 | void *priv; |
303 | 311 | ||
@@ -364,30 +372,6 @@ struct nouveau_fifo_engine { | |||
364 | void (*tlb_flush)(struct drm_device *dev); | 372 | void (*tlb_flush)(struct drm_device *dev); |
365 | }; | 373 | }; |
366 | 374 | ||
367 | struct nouveau_pgraph_engine { | ||
368 | bool accel_blocked; | ||
369 | bool registered; | ||
370 | int grctx_size; | ||
371 | void *priv; | ||
372 | |||
373 | /* NV2x/NV3x context table (0x400780) */ | ||
374 | struct nouveau_gpuobj *ctx_table; | ||
375 | |||
376 | int (*init)(struct drm_device *); | ||
377 | void (*takedown)(struct drm_device *); | ||
378 | |||
379 | void (*fifo_access)(struct drm_device *, bool); | ||
380 | |||
381 | struct nouveau_channel *(*channel)(struct drm_device *); | ||
382 | int (*create_context)(struct nouveau_channel *); | ||
383 | void (*destroy_context)(struct nouveau_channel *); | ||
384 | int (*load_context)(struct nouveau_channel *); | ||
385 | int (*unload_context)(struct drm_device *); | ||
386 | void (*tlb_flush)(struct drm_device *dev); | ||
387 | |||
388 | void (*set_tile_region)(struct drm_device *dev, int i); | ||
389 | }; | ||
390 | |||
391 | struct nouveau_display_engine { | 375 | struct nouveau_display_engine { |
392 | void *priv; | 376 | void *priv; |
393 | int (*early_init)(struct drm_device *); | 377 | int (*early_init)(struct drm_device *); |
@@ -426,6 +410,19 @@ struct nouveau_pm_voltage { | |||
426 | int nr_level; | 410 | int nr_level; |
427 | }; | 411 | }; |
428 | 412 | ||
413 | struct nouveau_pm_memtiming { | ||
414 | int id; | ||
415 | u32 reg_100220; | ||
416 | u32 reg_100224; | ||
417 | u32 reg_100228; | ||
418 | u32 reg_10022c; | ||
419 | u32 reg_100230; | ||
420 | u32 reg_100234; | ||
421 | u32 reg_100238; | ||
422 | u32 reg_10023c; | ||
423 | u32 reg_100240; | ||
424 | }; | ||
425 | |||
429 | #define NOUVEAU_PM_MAX_LEVEL 8 | 426 | #define NOUVEAU_PM_MAX_LEVEL 8 |
430 | struct nouveau_pm_level { | 427 | struct nouveau_pm_level { |
431 | struct device_attribute dev_attr; | 428 | struct device_attribute dev_attr; |
@@ -436,11 +433,13 @@ struct nouveau_pm_level { | |||
436 | u32 memory; | 433 | u32 memory; |
437 | u32 shader; | 434 | u32 shader; |
438 | u32 unk05; | 435 | u32 unk05; |
436 | u32 unk0a; | ||
439 | 437 | ||
440 | u8 voltage; | 438 | u8 voltage; |
441 | u8 fanspeed; | 439 | u8 fanspeed; |
442 | 440 | ||
443 | u16 memscript; | 441 | u16 memscript; |
442 | struct nouveau_pm_memtiming *timing; | ||
444 | }; | 443 | }; |
445 | 444 | ||
446 | struct nouveau_pm_temp_sensor_constants { | 445 | struct nouveau_pm_temp_sensor_constants { |
@@ -457,17 +456,6 @@ struct nouveau_pm_threshold_temp { | |||
457 | s16 fan_boost; | 456 | s16 fan_boost; |
458 | }; | 457 | }; |
459 | 458 | ||
460 | struct nouveau_pm_memtiming { | ||
461 | u32 reg_100220; | ||
462 | u32 reg_100224; | ||
463 | u32 reg_100228; | ||
464 | u32 reg_10022c; | ||
465 | u32 reg_100230; | ||
466 | u32 reg_100234; | ||
467 | u32 reg_100238; | ||
468 | u32 reg_10023c; | ||
469 | }; | ||
470 | |||
471 | struct nouveau_pm_memtimings { | 459 | struct nouveau_pm_memtimings { |
472 | bool supported; | 460 | bool supported; |
473 | struct nouveau_pm_memtiming *timing; | 461 | struct nouveau_pm_memtiming *timing; |
@@ -499,16 +487,6 @@ struct nouveau_pm_engine { | |||
499 | int (*temp_get)(struct drm_device *); | 487 | int (*temp_get)(struct drm_device *); |
500 | }; | 488 | }; |
501 | 489 | ||
502 | struct nouveau_crypt_engine { | ||
503 | bool registered; | ||
504 | |||
505 | int (*init)(struct drm_device *); | ||
506 | void (*takedown)(struct drm_device *); | ||
507 | int (*create_context)(struct nouveau_channel *); | ||
508 | void (*destroy_context)(struct nouveau_channel *); | ||
509 | void (*tlb_flush)(struct drm_device *dev); | ||
510 | }; | ||
511 | |||
512 | struct nouveau_vram_engine { | 490 | struct nouveau_vram_engine { |
513 | int (*init)(struct drm_device *); | 491 | int (*init)(struct drm_device *); |
514 | int (*get)(struct drm_device *, u64, u32 align, u32 size_nc, | 492 | int (*get)(struct drm_device *, u64, u32 align, u32 size_nc, |
@@ -523,12 +501,10 @@ struct nouveau_engine { | |||
523 | struct nouveau_mc_engine mc; | 501 | struct nouveau_mc_engine mc; |
524 | struct nouveau_timer_engine timer; | 502 | struct nouveau_timer_engine timer; |
525 | struct nouveau_fb_engine fb; | 503 | struct nouveau_fb_engine fb; |
526 | struct nouveau_pgraph_engine graph; | ||
527 | struct nouveau_fifo_engine fifo; | 504 | struct nouveau_fifo_engine fifo; |
528 | struct nouveau_display_engine display; | 505 | struct nouveau_display_engine display; |
529 | struct nouveau_gpio_engine gpio; | 506 | struct nouveau_gpio_engine gpio; |
530 | struct nouveau_pm_engine pm; | 507 | struct nouveau_pm_engine pm; |
531 | struct nouveau_crypt_engine crypt; | ||
532 | struct nouveau_vram_engine vram; | 508 | struct nouveau_vram_engine vram; |
533 | }; | 509 | }; |
534 | 510 | ||
@@ -637,6 +613,7 @@ struct drm_nouveau_private { | |||
637 | enum nouveau_card_type card_type; | 613 | enum nouveau_card_type card_type; |
638 | /* exact chipset, derived from NV_PMC_BOOT_0 */ | 614 | /* exact chipset, derived from NV_PMC_BOOT_0 */ |
639 | int chipset; | 615 | int chipset; |
616 | int stepping; | ||
640 | int flags; | 617 | int flags; |
641 | 618 | ||
642 | void __iomem *mmio; | 619 | void __iomem *mmio; |
@@ -647,6 +624,7 @@ struct drm_nouveau_private { | |||
647 | u32 ramin_base; | 624 | u32 ramin_base; |
648 | bool ramin_available; | 625 | bool ramin_available; |
649 | struct drm_mm ramin_heap; | 626 | struct drm_mm ramin_heap; |
627 | struct nouveau_exec_engine *eng[NVOBJ_ENGINE_NR]; | ||
650 | struct list_head gpuobj_list; | 628 | struct list_head gpuobj_list; |
651 | struct list_head classes; | 629 | struct list_head classes; |
652 | 630 | ||
@@ -745,10 +723,6 @@ struct drm_nouveau_private { | |||
745 | uint32_t crtc_owner; | 723 | uint32_t crtc_owner; |
746 | uint32_t dac_users[4]; | 724 | uint32_t dac_users[4]; |
747 | 725 | ||
748 | struct nouveau_suspend_resume { | ||
749 | uint32_t *ramin_copy; | ||
750 | } susres; | ||
751 | |||
752 | struct backlight_device *backlight; | 726 | struct backlight_device *backlight; |
753 | 727 | ||
754 | struct { | 728 | struct { |
@@ -757,8 +731,6 @@ struct drm_nouveau_private { | |||
757 | 731 | ||
758 | struct nouveau_fbdev *nfbdev; | 732 | struct nouveau_fbdev *nfbdev; |
759 | struct apertures_struct *apertures; | 733 | struct apertures_struct *apertures; |
760 | |||
761 | bool powered_down; | ||
762 | }; | 734 | }; |
763 | 735 | ||
764 | static inline struct drm_nouveau_private * | 736 | static inline struct drm_nouveau_private * |
@@ -883,17 +855,27 @@ extern void nouveau_channel_ref(struct nouveau_channel *chan, | |||
883 | extern void nouveau_channel_idle(struct nouveau_channel *chan); | 855 | extern void nouveau_channel_idle(struct nouveau_channel *chan); |
884 | 856 | ||
885 | /* nouveau_object.c */ | 857 | /* nouveau_object.c */ |
886 | #define NVOBJ_CLASS(d,c,e) do { \ | 858 | #define NVOBJ_ENGINE_ADD(d, e, p) do { \ |
859 | struct drm_nouveau_private *dev_priv = (d)->dev_private; \ | ||
860 | dev_priv->eng[NVOBJ_ENGINE_##e] = (p); \ | ||
861 | } while (0) | ||
862 | |||
863 | #define NVOBJ_ENGINE_DEL(d, e) do { \ | ||
864 | struct drm_nouveau_private *dev_priv = (d)->dev_private; \ | ||
865 | dev_priv->eng[NVOBJ_ENGINE_##e] = NULL; \ | ||
866 | } while (0) | ||
867 | |||
868 | #define NVOBJ_CLASS(d, c, e) do { \ | ||
887 | int ret = nouveau_gpuobj_class_new((d), (c), NVOBJ_ENGINE_##e); \ | 869 | int ret = nouveau_gpuobj_class_new((d), (c), NVOBJ_ENGINE_##e); \ |
888 | if (ret) \ | 870 | if (ret) \ |
889 | return ret; \ | 871 | return ret; \ |
890 | } while(0) | 872 | } while (0) |
891 | 873 | ||
892 | #define NVOBJ_MTHD(d,c,m,e) do { \ | 874 | #define NVOBJ_MTHD(d, c, m, e) do { \ |
893 | int ret = nouveau_gpuobj_mthd_new((d), (c), (m), (e)); \ | 875 | int ret = nouveau_gpuobj_mthd_new((d), (c), (m), (e)); \ |
894 | if (ret) \ | 876 | if (ret) \ |
895 | return ret; \ | 877 | return ret; \ |
896 | } while(0) | 878 | } while (0) |
897 | 879 | ||
898 | extern int nouveau_gpuobj_early_init(struct drm_device *); | 880 | extern int nouveau_gpuobj_early_init(struct drm_device *); |
899 | extern int nouveau_gpuobj_init(struct drm_device *); | 881 | extern int nouveau_gpuobj_init(struct drm_device *); |
@@ -903,7 +885,7 @@ extern void nouveau_gpuobj_resume(struct drm_device *dev); | |||
903 | extern int nouveau_gpuobj_class_new(struct drm_device *, u32 class, u32 eng); | 885 | extern int nouveau_gpuobj_class_new(struct drm_device *, u32 class, u32 eng); |
904 | extern int nouveau_gpuobj_mthd_new(struct drm_device *, u32 class, u32 mthd, | 886 | extern int nouveau_gpuobj_mthd_new(struct drm_device *, u32 class, u32 mthd, |
905 | int (*exec)(struct nouveau_channel *, | 887 | int (*exec)(struct nouveau_channel *, |
906 | u32 class, u32 mthd, u32 data)); | 888 | u32 class, u32 mthd, u32 data)); |
907 | extern int nouveau_gpuobj_mthd_call(struct nouveau_channel *, u32, u32, u32); | 889 | extern int nouveau_gpuobj_mthd_call(struct nouveau_channel *, u32, u32, u32); |
908 | extern int nouveau_gpuobj_mthd_call2(struct drm_device *, int, u32, u32, u32); | 890 | extern int nouveau_gpuobj_mthd_call2(struct drm_device *, int, u32, u32, u32); |
909 | extern int nouveau_gpuobj_channel_init(struct nouveau_channel *, | 891 | extern int nouveau_gpuobj_channel_init(struct nouveau_channel *, |
@@ -1137,81 +1119,50 @@ extern int nvc0_fifo_load_context(struct nouveau_channel *); | |||
1137 | extern int nvc0_fifo_unload_context(struct drm_device *); | 1119 | extern int nvc0_fifo_unload_context(struct drm_device *); |
1138 | 1120 | ||
1139 | /* nv04_graph.c */ | 1121 | /* nv04_graph.c */ |
1140 | extern int nv04_graph_init(struct drm_device *); | 1122 | extern int nv04_graph_create(struct drm_device *); |
1141 | extern void nv04_graph_takedown(struct drm_device *); | ||
1142 | extern void nv04_graph_fifo_access(struct drm_device *, bool); | 1123 | extern void nv04_graph_fifo_access(struct drm_device *, bool); |
1143 | extern struct nouveau_channel *nv04_graph_channel(struct drm_device *); | 1124 | extern int nv04_graph_object_new(struct nouveau_channel *, int, u32, u16); |
1144 | extern int nv04_graph_create_context(struct nouveau_channel *); | ||
1145 | extern void nv04_graph_destroy_context(struct nouveau_channel *); | ||
1146 | extern int nv04_graph_load_context(struct nouveau_channel *); | ||
1147 | extern int nv04_graph_unload_context(struct drm_device *); | ||
1148 | extern int nv04_graph_mthd_page_flip(struct nouveau_channel *chan, | 1125 | extern int nv04_graph_mthd_page_flip(struct nouveau_channel *chan, |
1149 | u32 class, u32 mthd, u32 data); | 1126 | u32 class, u32 mthd, u32 data); |
1150 | extern struct nouveau_bitfield nv04_graph_nsource[]; | 1127 | extern struct nouveau_bitfield nv04_graph_nsource[]; |
1151 | 1128 | ||
1152 | /* nv10_graph.c */ | 1129 | /* nv10_graph.c */ |
1153 | extern int nv10_graph_init(struct drm_device *); | 1130 | extern int nv10_graph_create(struct drm_device *); |
1154 | extern void nv10_graph_takedown(struct drm_device *); | ||
1155 | extern struct nouveau_channel *nv10_graph_channel(struct drm_device *); | 1131 | extern struct nouveau_channel *nv10_graph_channel(struct drm_device *); |
1156 | extern int nv10_graph_create_context(struct nouveau_channel *); | ||
1157 | extern void nv10_graph_destroy_context(struct nouveau_channel *); | ||
1158 | extern int nv10_graph_load_context(struct nouveau_channel *); | ||
1159 | extern int nv10_graph_unload_context(struct drm_device *); | ||
1160 | extern void nv10_graph_set_tile_region(struct drm_device *dev, int i); | ||
1161 | extern struct nouveau_bitfield nv10_graph_intr[]; | 1132 | extern struct nouveau_bitfield nv10_graph_intr[]; |
1162 | extern struct nouveau_bitfield nv10_graph_nstatus[]; | 1133 | extern struct nouveau_bitfield nv10_graph_nstatus[]; |
1163 | 1134 | ||
1164 | /* nv20_graph.c */ | 1135 | /* nv20_graph.c */ |
1165 | extern int nv20_graph_create_context(struct nouveau_channel *); | 1136 | extern int nv20_graph_create(struct drm_device *); |
1166 | extern void nv20_graph_destroy_context(struct nouveau_channel *); | ||
1167 | extern int nv20_graph_load_context(struct nouveau_channel *); | ||
1168 | extern int nv20_graph_unload_context(struct drm_device *); | ||
1169 | extern int nv20_graph_init(struct drm_device *); | ||
1170 | extern void nv20_graph_takedown(struct drm_device *); | ||
1171 | extern int nv30_graph_init(struct drm_device *); | ||
1172 | extern void nv20_graph_set_tile_region(struct drm_device *dev, int i); | ||
1173 | 1137 | ||
1174 | /* nv40_graph.c */ | 1138 | /* nv40_graph.c */ |
1175 | extern int nv40_graph_init(struct drm_device *); | 1139 | extern int nv40_graph_create(struct drm_device *); |
1176 | extern void nv40_graph_takedown(struct drm_device *); | ||
1177 | extern struct nouveau_channel *nv40_graph_channel(struct drm_device *); | ||
1178 | extern int nv40_graph_create_context(struct nouveau_channel *); | ||
1179 | extern void nv40_graph_destroy_context(struct nouveau_channel *); | ||
1180 | extern int nv40_graph_load_context(struct nouveau_channel *); | ||
1181 | extern int nv40_graph_unload_context(struct drm_device *); | ||
1182 | extern void nv40_grctx_init(struct nouveau_grctx *); | 1140 | extern void nv40_grctx_init(struct nouveau_grctx *); |
1183 | extern void nv40_graph_set_tile_region(struct drm_device *dev, int i); | ||
1184 | 1141 | ||
1185 | /* nv50_graph.c */ | 1142 | /* nv50_graph.c */ |
1186 | extern int nv50_graph_init(struct drm_device *); | 1143 | extern int nv50_graph_create(struct drm_device *); |
1187 | extern void nv50_graph_takedown(struct drm_device *); | ||
1188 | extern void nv50_graph_fifo_access(struct drm_device *, bool); | ||
1189 | extern struct nouveau_channel *nv50_graph_channel(struct drm_device *); | ||
1190 | extern int nv50_graph_create_context(struct nouveau_channel *); | ||
1191 | extern void nv50_graph_destroy_context(struct nouveau_channel *); | ||
1192 | extern int nv50_graph_load_context(struct nouveau_channel *); | ||
1193 | extern int nv50_graph_unload_context(struct drm_device *); | ||
1194 | extern int nv50_grctx_init(struct nouveau_grctx *); | 1144 | extern int nv50_grctx_init(struct nouveau_grctx *); |
1195 | extern void nv50_graph_tlb_flush(struct drm_device *dev); | ||
1196 | extern void nv84_graph_tlb_flush(struct drm_device *dev); | ||
1197 | extern struct nouveau_enum nv50_data_error_names[]; | 1145 | extern struct nouveau_enum nv50_data_error_names[]; |
1146 | extern int nv50_graph_isr_chid(struct drm_device *dev, u64 inst); | ||
1198 | 1147 | ||
1199 | /* nvc0_graph.c */ | 1148 | /* nvc0_graph.c */ |
1200 | extern int nvc0_graph_init(struct drm_device *); | 1149 | extern int nvc0_graph_create(struct drm_device *); |
1201 | extern void nvc0_graph_takedown(struct drm_device *); | 1150 | extern int nvc0_graph_isr_chid(struct drm_device *dev, u64 inst); |
1202 | extern void nvc0_graph_fifo_access(struct drm_device *, bool); | ||
1203 | extern struct nouveau_channel *nvc0_graph_channel(struct drm_device *); | ||
1204 | extern int nvc0_graph_create_context(struct nouveau_channel *); | ||
1205 | extern void nvc0_graph_destroy_context(struct nouveau_channel *); | ||
1206 | extern int nvc0_graph_load_context(struct nouveau_channel *); | ||
1207 | extern int nvc0_graph_unload_context(struct drm_device *); | ||
1208 | 1151 | ||
1209 | /* nv84_crypt.c */ | 1152 | /* nv84_crypt.c */ |
1210 | extern int nv84_crypt_init(struct drm_device *dev); | 1153 | extern int nv84_crypt_create(struct drm_device *); |
1211 | extern void nv84_crypt_fini(struct drm_device *dev); | 1154 | |
1212 | extern int nv84_crypt_create_context(struct nouveau_channel *); | 1155 | /* nva3_copy.c */ |
1213 | extern void nv84_crypt_destroy_context(struct nouveau_channel *); | 1156 | extern int nva3_copy_create(struct drm_device *dev); |
1214 | extern void nv84_crypt_tlb_flush(struct drm_device *dev); | 1157 | |
1158 | /* nvc0_copy.c */ | ||
1159 | extern int nvc0_copy_create(struct drm_device *dev, int engine); | ||
1160 | |||
1161 | /* nv40_mpeg.c */ | ||
1162 | extern int nv40_mpeg_create(struct drm_device *dev); | ||
1163 | |||
1164 | /* nv50_mpeg.c */ | ||
1165 | extern int nv50_mpeg_create(struct drm_device *dev); | ||
1215 | 1166 | ||
1216 | /* nv04_instmem.c */ | 1167 | /* nv04_instmem.c */ |
1217 | extern int nv04_instmem_init(struct drm_device *); | 1168 | extern int nv04_instmem_init(struct drm_device *); |
@@ -1402,8 +1353,8 @@ bool nv50_gpio_irq_enable(struct drm_device *, enum dcb_gpio_tag, bool on); | |||
1402 | /* nv50_calc. */ | 1353 | /* nv50_calc. */ |
1403 | int nv50_calc_pll(struct drm_device *, struct pll_lims *, int clk, | 1354 | int nv50_calc_pll(struct drm_device *, struct pll_lims *, int clk, |
1404 | int *N1, int *M1, int *N2, int *M2, int *P); | 1355 | int *N1, int *M1, int *N2, int *M2, int *P); |
1405 | int nv50_calc_pll2(struct drm_device *, struct pll_lims *, | 1356 | int nva3_calc_pll(struct drm_device *, struct pll_lims *, |
1406 | int clk, int *N, int *fN, int *M, int *P); | 1357 | int clk, int *N, int *fN, int *M, int *P); |
1407 | 1358 | ||
1408 | #ifndef ioread32_native | 1359 | #ifndef ioread32_native |
1409 | #ifdef __BIG_ENDIAN | 1360 | #ifdef __BIG_ENDIAN |
@@ -1579,6 +1530,13 @@ nv_match_device(struct drm_device *dev, unsigned device, | |||
1579 | dev->pdev->subsystem_device == sub_device; | 1530 | dev->pdev->subsystem_device == sub_device; |
1580 | } | 1531 | } |
1581 | 1532 | ||
1533 | static inline void * | ||
1534 | nv_engine(struct drm_device *dev, int engine) | ||
1535 | { | ||
1536 | struct drm_nouveau_private *dev_priv = dev->dev_private; | ||
1537 | return (void *)dev_priv->eng[engine]; | ||
1538 | } | ||
1539 | |||
1582 | /* returns 1 if device is one of the nv4x using the 0x4497 object class, | 1540 | /* returns 1 if device is one of the nv4x using the 0x4497 object class, |
1583 | * helpful to determine a number of other hardware features | 1541 | * helpful to determine a number of other hardware features |
1584 | */ | 1542 | */ |