radeon.h (9f48c89862e39b7f33b44123fc425cf901c89428) | radeon.h (1c0a46255f8d7daf5b601668836e185fd1294e94) |
---|---|
1/* 2 * Copyright 2008 Advanced Micro Devices, Inc. 3 * Copyright 2008 Red Hat Inc. 4 * Copyright 2009 Jerome Glisse. 5 * 6 * Permission is hereby granted, free of charge, to any person obtaining a 7 * copy of this software and associated documentation files (the "Software"), 8 * to deal in the Software without restriction, including without limitation --- 50 unchanged lines hidden (view full) --- 59 * memory controller (only MC setup failure 60 * are considered as fatal) 61 */ 62 63#include <linux/atomic.h> 64#include <linux/wait.h> 65#include <linux/list.h> 66#include <linux/kref.h> | 1/* 2 * Copyright 2008 Advanced Micro Devices, Inc. 3 * Copyright 2008 Red Hat Inc. 4 * Copyright 2009 Jerome Glisse. 5 * 6 * Permission is hereby granted, free of charge, to any person obtaining a 7 * copy of this software and associated documentation files (the "Software"), 8 * to deal in the Software without restriction, including without limitation --- 50 unchanged lines hidden (view full) --- 59 * memory controller (only MC setup failure 60 * are considered as fatal) 61 */ 62 63#include <linux/atomic.h> 64#include <linux/wait.h> 65#include <linux/list.h> 66#include <linux/kref.h> |
67#include <linux/interval_tree.h> 68#include <linux/hashtable.h> 69#include <linux/fence.h> |
|
67 68#include <ttm/ttm_bo_api.h> 69#include <ttm/ttm_bo_driver.h> 70#include <ttm/ttm_placement.h> 71#include <ttm/ttm_module.h> 72#include <ttm/ttm_execbuf_util.h> 73 | 70 71#include <ttm/ttm_bo_api.h> 72#include <ttm/ttm_bo_driver.h> 73#include <ttm/ttm_placement.h> 74#include <ttm/ttm_module.h> 75#include <ttm/ttm_execbuf_util.h> 76 |
77#include <drm/drm_gem.h> 78 |
|
74#include "radeon_family.h" 75#include "radeon_mode.h" 76#include "radeon_reg.h" 77 78/* 79 * Modules parameters. 80 */ 81extern int radeon_no_wb; --- 16 unchanged lines hidden (view full) --- 98extern int radeon_fastfb; 99extern int radeon_dpm; 100extern int radeon_aspm; 101extern int radeon_runtime_pm; 102extern int radeon_hard_reset; 103extern int radeon_vm_size; 104extern int radeon_vm_block_size; 105extern int radeon_deep_color; | 79#include "radeon_family.h" 80#include "radeon_mode.h" 81#include "radeon_reg.h" 82 83/* 84 * Modules parameters. 85 */ 86extern int radeon_no_wb; --- 16 unchanged lines hidden (view full) --- 103extern int radeon_fastfb; 104extern int radeon_dpm; 105extern int radeon_aspm; 106extern int radeon_runtime_pm; 107extern int radeon_hard_reset; 108extern int radeon_vm_size; 109extern int radeon_vm_block_size; 110extern int radeon_deep_color; |
111extern int radeon_use_pflipirq; 112extern int radeon_bapm; 113extern int radeon_backlight; |
|
106 107/* 108 * Copy from radeon_drv.h so we don't have to include both and have conflicting 109 * symbol; 110 */ 111#define RADEON_MAX_USEC_TIMEOUT 100000 /* 100 ms */ 112#define RADEON_FENCE_JIFFIES_TIMEOUT (HZ / 2) 113/* RADEON_IB_POOL_SIZE must be a power of 2 */ 114#define RADEON_IB_POOL_SIZE 16 115#define RADEON_DEBUGFS_MAX_COMPONENTS 32 116#define RADEONFB_CONN_LIMIT 4 117#define RADEON_BIOS_NUM_SCRATCH 8 118 | 114 115/* 116 * Copy from radeon_drv.h so we don't have to include both and have conflicting 117 * symbol; 118 */ 119#define RADEON_MAX_USEC_TIMEOUT 100000 /* 100 ms */ 120#define RADEON_FENCE_JIFFIES_TIMEOUT (HZ / 2) 121/* RADEON_IB_POOL_SIZE must be a power of 2 */ 122#define RADEON_IB_POOL_SIZE 16 123#define RADEON_DEBUGFS_MAX_COMPONENTS 32 124#define RADEONFB_CONN_LIMIT 4 125#define RADEON_BIOS_NUM_SCRATCH 8 126 |
119/* fence seq are set to this number when signaled */ 120#define RADEON_FENCE_SIGNALED_SEQ 0LL 121 | |
122/* internal ring indices */ 123/* r1xx+ has gfx CP ring */ 124#define RADEON_RING_TYPE_GFX_INDEX 0 125 126/* cayman has 2 compute CP rings */ 127#define CAYMAN_RING_TYPE_CP1_INDEX 1 128#define CAYMAN_RING_TYPE_CP2_INDEX 2 129 --- 169 unchanged lines hidden (view full) --- 299 u16 *voltage, 300 u16 leakage_idx); 301int radeon_atom_get_leakage_id_from_vbios(struct radeon_device *rdev, 302 u16 *leakage_id); 303int radeon_atom_get_leakage_vddc_based_on_leakage_params(struct radeon_device *rdev, 304 u16 *vddc, u16 *vddci, 305 u16 virtual_voltage_id, 306 u16 vbios_voltage_id); | 127/* internal ring indices */ 128/* r1xx+ has gfx CP ring */ 129#define RADEON_RING_TYPE_GFX_INDEX 0 130 131/* cayman has 2 compute CP rings */ 132#define CAYMAN_RING_TYPE_CP1_INDEX 1 133#define CAYMAN_RING_TYPE_CP2_INDEX 2 134 --- 169 unchanged lines hidden (view full) --- 304 u16 *voltage, 305 u16 leakage_idx); 306int radeon_atom_get_leakage_id_from_vbios(struct radeon_device *rdev, 307 u16 *leakage_id); 308int radeon_atom_get_leakage_vddc_based_on_leakage_params(struct radeon_device *rdev, 309 u16 *vddc, u16 *vddci, 310 u16 virtual_voltage_id, 311 u16 vbios_voltage_id); |
312int radeon_atom_get_voltage_evv(struct radeon_device *rdev, 313 u16 virtual_voltage_id, 314 u16 *voltage); |
|
307int radeon_atom_round_to_true_voltage(struct radeon_device *rdev, 308 u8 voltage_type, 309 u16 nominal_voltage, 310 u16 *true_voltage); 311int radeon_atom_get_min_voltage(struct radeon_device *rdev, 312 u8 voltage_type, u16 *min_voltage); 313int radeon_atom_get_max_voltage(struct radeon_device *rdev, 314 u8 voltage_type, u16 *max_voltage); 315int radeon_atom_get_voltage_table(struct radeon_device *rdev, 316 u8 voltage_type, u8 voltage_mode, 317 struct atom_voltage_table *voltage_table); 318bool radeon_atom_is_voltage_gpio(struct radeon_device *rdev, 319 u8 voltage_type, u8 voltage_mode); | 315int radeon_atom_round_to_true_voltage(struct radeon_device *rdev, 316 u8 voltage_type, 317 u16 nominal_voltage, 318 u16 *true_voltage); 319int radeon_atom_get_min_voltage(struct radeon_device *rdev, 320 u8 voltage_type, u16 *min_voltage); 321int radeon_atom_get_max_voltage(struct radeon_device *rdev, 322 u8 voltage_type, u16 *max_voltage); 323int radeon_atom_get_voltage_table(struct radeon_device *rdev, 324 u8 voltage_type, u8 voltage_mode, 325 struct atom_voltage_table *voltage_table); 326bool radeon_atom_is_voltage_gpio(struct radeon_device *rdev, 327 u8 voltage_type, u8 voltage_mode); |
328int radeon_atom_get_svi2_info(struct radeon_device *rdev, 329 u8 voltage_type, 330 u8 *svd_gpio_id, u8 *svc_gpio_id); |
|
320void radeon_atom_update_memory_dll(struct radeon_device *rdev, 321 u32 mem_clock); 322void radeon_atom_set_ac_timing(struct radeon_device *rdev, 323 u32 mem_clock); 324int radeon_atom_init_mc_reg_table(struct radeon_device *rdev, 325 u8 module_index, 326 struct atom_mc_reg_table *reg_table); 327int radeon_atom_get_memory_info(struct radeon_device *rdev, --- 7 unchanged lines hidden (view full) --- 335extern void evergreen_tiling_fields(unsigned tiling_flags, unsigned *bankw, 336 unsigned *bankh, unsigned *mtaspect, 337 unsigned *tile_split); 338 339/* 340 * Fences. 341 */ 342struct radeon_fence_driver { | 331void radeon_atom_update_memory_dll(struct radeon_device *rdev, 332 u32 mem_clock); 333void radeon_atom_set_ac_timing(struct radeon_device *rdev, 334 u32 mem_clock); 335int radeon_atom_init_mc_reg_table(struct radeon_device *rdev, 336 u8 module_index, 337 struct atom_mc_reg_table *reg_table); 338int radeon_atom_get_memory_info(struct radeon_device *rdev, --- 7 unchanged lines hidden (view full) --- 346extern void evergreen_tiling_fields(unsigned tiling_flags, unsigned *bankw, 347 unsigned *bankh, unsigned *mtaspect, 348 unsigned *tile_split); 349 350/* 351 * Fences. 352 */ 353struct radeon_fence_driver { |
354 struct radeon_device *rdev; |
|
343 uint32_t scratch_reg; 344 uint64_t gpu_addr; 345 volatile uint32_t *cpu_addr; 346 /* sync_seq is protected by ring emission lock */ 347 uint64_t sync_seq[RADEON_NUM_RINGS]; 348 atomic64_t last_seq; | 355 uint32_t scratch_reg; 356 uint64_t gpu_addr; 357 volatile uint32_t *cpu_addr; 358 /* sync_seq is protected by ring emission lock */ 359 uint64_t sync_seq[RADEON_NUM_RINGS]; 360 atomic64_t last_seq; |
349 bool initialized; | 361 bool initialized, delayed_irq; 362 struct delayed_work lockup_work; |
350}; 351 352struct radeon_fence { | 363}; 364 365struct radeon_fence { |
366 struct fence base; 367 |
|
353 struct radeon_device *rdev; | 368 struct radeon_device *rdev; |
354 struct kref kref; 355 /* protected by radeon_fence.lock */ | |
356 uint64_t seq; 357 /* RB, DMA, etc. */ 358 unsigned ring; | 369 uint64_t seq; 370 /* RB, DMA, etc. */ 371 unsigned ring; |
372 373 wait_queue_t fence_wake; |
|
359}; 360 361int radeon_fence_driver_start_ring(struct radeon_device *rdev, int ring); 362int radeon_fence_driver_init(struct radeon_device *rdev); 363void radeon_fence_driver_fini(struct radeon_device *rdev); | 374}; 375 376int radeon_fence_driver_start_ring(struct radeon_device *rdev, int ring); 377int radeon_fence_driver_init(struct radeon_device *rdev); 378void radeon_fence_driver_fini(struct radeon_device *rdev); |
364void radeon_fence_driver_force_completion(struct radeon_device *rdev); | 379void radeon_fence_driver_force_completion(struct radeon_device *rdev, int ring); |
365int radeon_fence_emit(struct radeon_device *rdev, struct radeon_fence **fence, int ring); 366void radeon_fence_process(struct radeon_device *rdev, int ring); 367bool radeon_fence_signaled(struct radeon_fence *fence); 368int radeon_fence_wait(struct radeon_fence *fence, bool interruptible); 369int radeon_fence_wait_next(struct radeon_device *rdev, int ring); 370int radeon_fence_wait_empty(struct radeon_device *rdev, int ring); 371int radeon_fence_wait_any(struct radeon_device *rdev, 372 struct radeon_fence **fences, --- 63 unchanged lines hidden (view full) --- 436 struct dentry *gtt; 437#endif 438}; 439 440/* bo virtual address in a specific vm */ 441struct radeon_bo_va { 442 /* protected by bo being reserved */ 443 struct list_head bo_list; | 380int radeon_fence_emit(struct radeon_device *rdev, struct radeon_fence **fence, int ring); 381void radeon_fence_process(struct radeon_device *rdev, int ring); 382bool radeon_fence_signaled(struct radeon_fence *fence); 383int radeon_fence_wait(struct radeon_fence *fence, bool interruptible); 384int radeon_fence_wait_next(struct radeon_device *rdev, int ring); 385int radeon_fence_wait_empty(struct radeon_device *rdev, int ring); 386int radeon_fence_wait_any(struct radeon_device *rdev, 387 struct radeon_fence **fences, --- 63 unchanged lines hidden (view full) --- 451 struct dentry *gtt; 452#endif 453}; 454 455/* bo virtual address in a specific vm */ 456struct radeon_bo_va { 457 /* protected by bo being reserved */ 458 struct list_head bo_list; |
444 uint64_t soffset; 445 uint64_t eoffset; | |
446 uint32_t flags; | 459 uint32_t flags; |
447 bool valid; | 460 uint64_t addr; |
448 unsigned ref_count; 449 450 /* protected by vm mutex */ | 461 unsigned ref_count; 462 463 /* protected by vm mutex */ |
451 struct list_head vm_list; | 464 struct interval_tree_node it; 465 struct list_head vm_status; |
452 453 /* constant after initialization */ 454 struct radeon_vm *vm; 455 struct radeon_bo *bo; 456}; 457 458struct radeon_bo { 459 /* Protected by gem.mutex */ 460 struct list_head list; 461 /* Protected by tbo.reserved */ 462 u32 initial_domain; | 466 467 /* constant after initialization */ 468 struct radeon_vm *vm; 469 struct radeon_bo *bo; 470}; 471 472struct radeon_bo { 473 /* Protected by gem.mutex */ 474 struct list_head list; 475 /* Protected by tbo.reserved */ 476 u32 initial_domain; |
463 u32 placements[3]; | 477 struct ttm_place placements[4]; |
464 struct ttm_placement placement; 465 struct ttm_buffer_object tbo; 466 struct ttm_bo_kmap_obj kmap; | 478 struct ttm_placement placement; 479 struct ttm_buffer_object tbo; 480 struct ttm_bo_kmap_obj kmap; |
481 u32 flags; |
|
467 unsigned pin_count; 468 void *kptr; 469 u32 tiling_flags; 470 u32 pitch; 471 int surface_reg; 472 /* list of all virtual address to which this bo 473 * is associated to 474 */ 475 struct list_head va; 476 /* Constant after initialization */ 477 struct radeon_device *rdev; 478 struct drm_gem_object gem_base; 479 480 struct ttm_bo_kmap_obj dma_buf_vmap; 481 pid_t pid; | 482 unsigned pin_count; 483 void *kptr; 484 u32 tiling_flags; 485 u32 pitch; 486 int surface_reg; 487 /* list of all virtual address to which this bo 488 * is associated to 489 */ 490 struct list_head va; 491 /* Constant after initialization */ 492 struct radeon_device *rdev; 493 struct drm_gem_object gem_base; 494 495 struct ttm_bo_kmap_obj dma_buf_vmap; 496 pid_t pid; |
497 498 struct radeon_mn *mn; 499 struct interval_tree_node mn_it; |
|
482}; 483#define gem_to_radeon_bo(gobj) container_of((gobj), struct radeon_bo, gem_base) 484 485int radeon_gem_debugfs_init(struct radeon_device *rdev); 486 487/* sub-allocation manager, it has to be protected by another lock. 488 * By conception this is an helper for other part of the driver 489 * like the indirect buffer or semaphore, which both have their --- 47 unchanged lines hidden (view full) --- 537 */ 538struct radeon_gem { 539 struct mutex mutex; 540 struct list_head objects; 541}; 542 543int radeon_gem_init(struct radeon_device *rdev); 544void radeon_gem_fini(struct radeon_device *rdev); | 500}; 501#define gem_to_radeon_bo(gobj) container_of((gobj), struct radeon_bo, gem_base) 502 503int radeon_gem_debugfs_init(struct radeon_device *rdev); 504 505/* sub-allocation manager, it has to be protected by another lock. 506 * By conception this is an helper for other part of the driver 507 * like the indirect buffer or semaphore, which both have their --- 47 unchanged lines hidden (view full) --- 555 */ 556struct radeon_gem { 557 struct mutex mutex; 558 struct list_head objects; 559}; 560 561int radeon_gem_init(struct radeon_device *rdev); 562void radeon_gem_fini(struct radeon_device *rdev); |
545int radeon_gem_object_create(struct radeon_device *rdev, int size, | 563int radeon_gem_object_create(struct radeon_device *rdev, unsigned long size, |
546 int alignment, int initial_domain, | 564 int alignment, int initial_domain, |
547 bool discardable, bool kernel, | 565 u32 flags, bool kernel, |
548 struct drm_gem_object **obj); 549 550int radeon_mode_dumb_create(struct drm_file *file_priv, 551 struct drm_device *dev, 552 struct drm_mode_create_dumb *args); 553int radeon_mode_dumb_mmap(struct drm_file *filp, 554 struct drm_device *dev, 555 uint32_t handle, uint64_t *offset_p); --- 9 unchanged lines hidden (view full) --- 565}; 566 567int radeon_semaphore_create(struct radeon_device *rdev, 568 struct radeon_semaphore **semaphore); 569bool radeon_semaphore_emit_signal(struct radeon_device *rdev, int ring, 570 struct radeon_semaphore *semaphore); 571bool radeon_semaphore_emit_wait(struct radeon_device *rdev, int ring, 572 struct radeon_semaphore *semaphore); | 566 struct drm_gem_object **obj); 567 568int radeon_mode_dumb_create(struct drm_file *file_priv, 569 struct drm_device *dev, 570 struct drm_mode_create_dumb *args); 571int radeon_mode_dumb_mmap(struct drm_file *filp, 572 struct drm_device *dev, 573 uint32_t handle, uint64_t *offset_p); --- 9 unchanged lines hidden (view full) --- 583}; 584 585int radeon_semaphore_create(struct radeon_device *rdev, 586 struct radeon_semaphore **semaphore); 587bool radeon_semaphore_emit_signal(struct radeon_device *rdev, int ring, 588 struct radeon_semaphore *semaphore); 589bool radeon_semaphore_emit_wait(struct radeon_device *rdev, int ring, 590 struct radeon_semaphore *semaphore); |
573void radeon_semaphore_sync_to(struct radeon_semaphore *semaphore, 574 struct radeon_fence *fence); | 591void radeon_semaphore_sync_fence(struct radeon_semaphore *semaphore, 592 struct radeon_fence *fence); 593int radeon_semaphore_sync_resv(struct radeon_device *rdev, 594 struct radeon_semaphore *semaphore, 595 struct reservation_object *resv, 596 bool shared); |
575int radeon_semaphore_sync_rings(struct radeon_device *rdev, 576 struct radeon_semaphore *semaphore, 577 int waiting_ring); 578void radeon_semaphore_free(struct radeon_device *rdev, 579 struct radeon_semaphore **semaphore, 580 struct radeon_fence *fence); 581 582/* 583 * GART structures, functions & helpers 584 */ 585struct radeon_mc; 586 587#define RADEON_GPU_PAGE_SIZE 4096 588#define RADEON_GPU_PAGE_MASK (RADEON_GPU_PAGE_SIZE - 1) 589#define RADEON_GPU_PAGE_SHIFT 12 590#define RADEON_GPU_PAGE_ALIGN(a) (((a) + RADEON_GPU_PAGE_MASK) & ~RADEON_GPU_PAGE_MASK) 591 | 597int radeon_semaphore_sync_rings(struct radeon_device *rdev, 598 struct radeon_semaphore *semaphore, 599 int waiting_ring); 600void radeon_semaphore_free(struct radeon_device *rdev, 601 struct radeon_semaphore **semaphore, 602 struct radeon_fence *fence); 603 604/* 605 * GART structures, functions & helpers 606 */ 607struct radeon_mc; 608 609#define RADEON_GPU_PAGE_SIZE 4096 610#define RADEON_GPU_PAGE_MASK (RADEON_GPU_PAGE_SIZE - 1) 611#define RADEON_GPU_PAGE_SHIFT 12 612#define RADEON_GPU_PAGE_ALIGN(a) (((a) + RADEON_GPU_PAGE_MASK) & ~RADEON_GPU_PAGE_MASK) 613 |
614#define RADEON_GART_PAGE_DUMMY 0 615#define RADEON_GART_PAGE_VALID (1 << 0) 616#define RADEON_GART_PAGE_READ (1 << 1) 617#define RADEON_GART_PAGE_WRITE (1 << 2) 618#define RADEON_GART_PAGE_SNOOP (1 << 3) 619 |
|
592struct radeon_gart { 593 dma_addr_t table_addr; 594 struct radeon_bo *robj; 595 void *ptr; 596 unsigned num_gpu_pages; 597 unsigned num_cpu_pages; 598 unsigned table_size; 599 struct page **pages; --- 8 unchanged lines hidden (view full) --- 608int radeon_gart_table_vram_pin(struct radeon_device *rdev); 609void radeon_gart_table_vram_unpin(struct radeon_device *rdev); 610int radeon_gart_init(struct radeon_device *rdev); 611void radeon_gart_fini(struct radeon_device *rdev); 612void radeon_gart_unbind(struct radeon_device *rdev, unsigned offset, 613 int pages); 614int radeon_gart_bind(struct radeon_device *rdev, unsigned offset, 615 int pages, struct page **pagelist, | 620struct radeon_gart { 621 dma_addr_t table_addr; 622 struct radeon_bo *robj; 623 void *ptr; 624 unsigned num_gpu_pages; 625 unsigned num_cpu_pages; 626 unsigned table_size; 627 struct page **pages; --- 8 unchanged lines hidden (view full) --- 636int radeon_gart_table_vram_pin(struct radeon_device *rdev); 637void radeon_gart_table_vram_unpin(struct radeon_device *rdev); 638int radeon_gart_init(struct radeon_device *rdev); 639void radeon_gart_fini(struct radeon_device *rdev); 640void radeon_gart_unbind(struct radeon_device *rdev, unsigned offset, 641 int pages); 642int radeon_gart_bind(struct radeon_device *rdev, unsigned offset, 643 int pages, struct page **pagelist, |
616 dma_addr_t *dma_addr); 617void radeon_gart_restore(struct radeon_device *rdev); | 644 dma_addr_t *dma_addr, uint32_t flags); |
618 619 620/* 621 * GPU MC structures, functions & helpers 622 */ 623struct radeon_mc { 624 resource_size_t aper_size; 625 resource_size_t aper_base; --- 43 unchanged lines hidden (view full) --- 669 resource_size_t size; 670 u32 __iomem *ptr; 671 u32 num_doorbells; /* Number of doorbells actually reserved for radeon. */ 672 unsigned long used[DIV_ROUND_UP(RADEON_MAX_DOORBELLS, BITS_PER_LONG)]; 673}; 674 675int radeon_doorbell_get(struct radeon_device *rdev, u32 *page); 676void radeon_doorbell_free(struct radeon_device *rdev, u32 doorbell); | 645 646 647/* 648 * GPU MC structures, functions & helpers 649 */ 650struct radeon_mc { 651 resource_size_t aper_size; 652 resource_size_t aper_base; --- 43 unchanged lines hidden (view full) --- 696 resource_size_t size; 697 u32 __iomem *ptr; 698 u32 num_doorbells; /* Number of doorbells actually reserved for radeon. */ 699 unsigned long used[DIV_ROUND_UP(RADEON_MAX_DOORBELLS, BITS_PER_LONG)]; 700}; 701 702int radeon_doorbell_get(struct radeon_device *rdev, u32 *page); 703void radeon_doorbell_free(struct radeon_device *rdev, u32 doorbell); |
704void radeon_doorbell_get_kfd_info(struct radeon_device *rdev, 705 phys_addr_t *aperture_base, 706 size_t *aperture_size, 707 size_t *start_offset); |
|
677 678/* 679 * IRQS. 680 */ 681 682struct radeon_flip_work { 683 struct work_struct flip_work; 684 struct work_struct unpin_work; 685 struct radeon_device *rdev; 686 int crtc_id; | 708 709/* 710 * IRQS. 711 */ 712 713struct radeon_flip_work { 714 struct work_struct flip_work; 715 struct work_struct unpin_work; 716 struct radeon_device *rdev; 717 int crtc_id; |
687 struct drm_framebuffer *fb; | 718 uint64_t base; |
688 struct drm_pending_vblank_event *event; 689 struct radeon_bo *old_rbo; | 719 struct drm_pending_vblank_event *event; 720 struct radeon_bo *old_rbo; |
690 struct radeon_bo *new_rbo; 691 struct radeon_fence *fence; | 721 struct fence *fence; |
692}; 693 694struct r500_irq_stat_regs { 695 u32 disp_int; 696 u32 hdmi0_status; 697}; 698 699struct r600_irq_stat_regs { --- 61 unchanged lines hidden (view full) --- 761 bool afmt[RADEON_MAX_AFMT_BLOCKS]; 762 union radeon_irq_stat_regs stat_regs; 763 bool dpm_thermal; 764}; 765 766int radeon_irq_kms_init(struct radeon_device *rdev); 767void radeon_irq_kms_fini(struct radeon_device *rdev); 768void radeon_irq_kms_sw_irq_get(struct radeon_device *rdev, int ring); | 722}; 723 724struct r500_irq_stat_regs { 725 u32 disp_int; 726 u32 hdmi0_status; 727}; 728 729struct r600_irq_stat_regs { --- 61 unchanged lines hidden (view full) --- 791 bool afmt[RADEON_MAX_AFMT_BLOCKS]; 792 union radeon_irq_stat_regs stat_regs; 793 bool dpm_thermal; 794}; 795 796int radeon_irq_kms_init(struct radeon_device *rdev); 797void radeon_irq_kms_fini(struct radeon_device *rdev); 798void radeon_irq_kms_sw_irq_get(struct radeon_device *rdev, int ring); |
799bool radeon_irq_kms_sw_irq_get_delayed(struct radeon_device *rdev, int ring); |
|
769void radeon_irq_kms_sw_irq_put(struct radeon_device *rdev, int ring); 770void radeon_irq_kms_pflip_irq_get(struct radeon_device *rdev, int crtc); 771void radeon_irq_kms_pflip_irq_put(struct radeon_device *rdev, int crtc); 772void radeon_irq_kms_enable_afmt(struct radeon_device *rdev, int block); 773void radeon_irq_kms_disable_afmt(struct radeon_device *rdev, int block); 774void radeon_irq_kms_enable_hpd(struct radeon_device *rdev, unsigned hpd_mask); 775void radeon_irq_kms_disable_hpd(struct radeon_device *rdev, unsigned hpd_mask); 776 --- 73 unchanged lines hidden (view full) --- 850#define R600_PTE_READABLE (1 << 5) 851#define R600_PTE_WRITEABLE (1 << 6) 852 853/* PTE (Page Table Entry) fragment field for different page sizes */ 854#define R600_PTE_FRAG_4KB (0 << 7) 855#define R600_PTE_FRAG_64KB (4 << 7) 856#define R600_PTE_FRAG_256KB (6 << 7) 857 | 800void radeon_irq_kms_sw_irq_put(struct radeon_device *rdev, int ring); 801void radeon_irq_kms_pflip_irq_get(struct radeon_device *rdev, int crtc); 802void radeon_irq_kms_pflip_irq_put(struct radeon_device *rdev, int crtc); 803void radeon_irq_kms_enable_afmt(struct radeon_device *rdev, int block); 804void radeon_irq_kms_disable_afmt(struct radeon_device *rdev, int block); 805void radeon_irq_kms_enable_hpd(struct radeon_device *rdev, unsigned hpd_mask); 806void radeon_irq_kms_disable_hpd(struct radeon_device *rdev, unsigned hpd_mask); 807 --- 73 unchanged lines hidden (view full) --- 881#define R600_PTE_READABLE (1 << 5) 882#define R600_PTE_WRITEABLE (1 << 6) 883 884/* PTE (Page Table Entry) fragment field for different page sizes */ 885#define R600_PTE_FRAG_4KB (0 << 7) 886#define R600_PTE_FRAG_64KB (4 << 7) 887#define R600_PTE_FRAG_256KB (6 << 7) 888 |
858/* flags used for GART page table entries on R600+ */ 859#define R600_PTE_GART ( R600_PTE_VALID | R600_PTE_SYSTEM | R600_PTE_SNOOPED \ 860 | R600_PTE_READABLE | R600_PTE_WRITEABLE) | 889/* flags needed to be set so we can copy directly from the GART table */ 890#define R600_PTE_GART_MASK ( R600_PTE_READABLE | R600_PTE_WRITEABLE | \ 891 R600_PTE_SYSTEM | R600_PTE_VALID ) |
861 862struct radeon_vm_pt { 863 struct radeon_bo *bo; 864 uint64_t addr; 865}; 866 867struct radeon_vm { | 892 893struct radeon_vm_pt { 894 struct radeon_bo *bo; 895 uint64_t addr; 896}; 897 898struct radeon_vm { |
868 struct list_head va; | 899 struct rb_root va; |
869 unsigned id; 870 | 900 unsigned id; 901 |
902 /* BOs moved, but not yet updated in the PT */ 903 struct list_head invalidated; 904 905 /* BOs freed, but not yet updated in the PT */ 906 struct list_head freed; 907 |
|
871 /* contains the page directory */ 872 struct radeon_bo *page_directory; 873 uint64_t pd_gpu_addr; 874 unsigned max_pde_used; 875 876 /* array of page tables, one for each page directory entry */ 877 struct radeon_vm_pt *page_tables; 878 | 908 /* contains the page directory */ 909 struct radeon_bo *page_directory; 910 uint64_t pd_gpu_addr; 911 unsigned max_pde_used; 912 913 /* array of page tables, one for each page directory entry */ 914 struct radeon_vm_pt *page_tables; 915 |
916 struct radeon_bo_va *ib_bo_va; 917 |
|
879 struct mutex mutex; 880 /* last fence for cs using this vm */ 881 struct radeon_fence *fence; 882 /* last flush or NULL if we still need to flush */ 883 struct radeon_fence *last_flush; 884 /* last use of vmid */ 885 struct radeon_fence *last_id_use; 886}; 887 888struct radeon_vm_manager { 889 struct radeon_fence *active[RADEON_NUM_VM]; 890 uint32_t max_pfn; 891 /* number of VMIDs */ 892 unsigned nvm; 893 /* vram base address for page table entry */ 894 u64 vram_base_offset; 895 /* is vm enabled? */ 896 bool enabled; | 918 struct mutex mutex; 919 /* last fence for cs using this vm */ 920 struct radeon_fence *fence; 921 /* last flush or NULL if we still need to flush */ 922 struct radeon_fence *last_flush; 923 /* last use of vmid */ 924 struct radeon_fence *last_id_use; 925}; 926 927struct radeon_vm_manager { 928 struct radeon_fence *active[RADEON_NUM_VM]; 929 uint32_t max_pfn; 930 /* number of VMIDs */ 931 unsigned nvm; 932 /* vram base address for page table entry */ 933 u64 vram_base_offset; 934 /* is vm enabled? */ 935 bool enabled; |
936 /* for hw to save the PD addr on suspend/resume */ 937 uint32_t saved_table_addr[RADEON_NUM_VM]; |
|
897}; 898 899/* 900 * file private structure 901 */ 902struct radeon_fpriv { 903 struct radeon_vm vm; 904}; --- 37 unchanged lines hidden (view full) --- 942 u32 cp_table_size; 943}; 944 945int radeon_ib_get(struct radeon_device *rdev, int ring, 946 struct radeon_ib *ib, struct radeon_vm *vm, 947 unsigned size); 948void radeon_ib_free(struct radeon_device *rdev, struct radeon_ib *ib); 949int radeon_ib_schedule(struct radeon_device *rdev, struct radeon_ib *ib, | 938}; 939 940/* 941 * file private structure 942 */ 943struct radeon_fpriv { 944 struct radeon_vm vm; 945}; --- 37 unchanged lines hidden (view full) --- 983 u32 cp_table_size; 984}; 985 986int radeon_ib_get(struct radeon_device *rdev, int ring, 987 struct radeon_ib *ib, struct radeon_vm *vm, 988 unsigned size); 989void radeon_ib_free(struct radeon_device *rdev, struct radeon_ib *ib); 990int radeon_ib_schedule(struct radeon_device *rdev, struct radeon_ib *ib, |
950 struct radeon_ib *const_ib); | 991 struct radeon_ib *const_ib, bool hdp_flush); |
951int radeon_ib_pool_init(struct radeon_device *rdev); 952void radeon_ib_pool_fini(struct radeon_device *rdev); 953int radeon_ib_ring_tests(struct radeon_device *rdev); 954/* Ring access between begin & end cannot sleep */ 955bool radeon_ring_supports_scratch_reg(struct radeon_device *rdev, 956 struct radeon_ring *ring); 957void radeon_ring_free_size(struct radeon_device *rdev, struct radeon_ring *cp); 958int radeon_ring_alloc(struct radeon_device *rdev, struct radeon_ring *cp, unsigned ndw); 959int radeon_ring_lock(struct radeon_device *rdev, struct radeon_ring *cp, unsigned ndw); | 992int radeon_ib_pool_init(struct radeon_device *rdev); 993void radeon_ib_pool_fini(struct radeon_device *rdev); 994int radeon_ib_ring_tests(struct radeon_device *rdev); 995/* Ring access between begin & end cannot sleep */ 996bool radeon_ring_supports_scratch_reg(struct radeon_device *rdev, 997 struct radeon_ring *ring); 998void radeon_ring_free_size(struct radeon_device *rdev, struct radeon_ring *cp); 999int radeon_ring_alloc(struct radeon_device *rdev, struct radeon_ring *cp, unsigned ndw); 1000int radeon_ring_lock(struct radeon_device *rdev, struct radeon_ring *cp, unsigned ndw); |
960void radeon_ring_commit(struct radeon_device *rdev, struct radeon_ring *cp); 961void radeon_ring_unlock_commit(struct radeon_device *rdev, struct radeon_ring *cp); | 1001void radeon_ring_commit(struct radeon_device *rdev, struct radeon_ring *cp, 1002 bool hdp_flush); 1003void radeon_ring_unlock_commit(struct radeon_device *rdev, struct radeon_ring *cp, 1004 bool hdp_flush); |
962void radeon_ring_undo(struct radeon_ring *ring); 963void radeon_ring_unlock_undo(struct radeon_device *rdev, struct radeon_ring *cp); 964int radeon_ring_test(struct radeon_device *rdev, struct radeon_ring *cp); 965void radeon_ring_lockup_update(struct radeon_device *rdev, 966 struct radeon_ring *ring); 967bool radeon_ring_test_lockup(struct radeon_device *rdev, struct radeon_ring *ring); 968unsigned radeon_ring_backup(struct radeon_device *rdev, struct radeon_ring *ring, 969 uint32_t **data); --- 119 unchanged lines hidden (view full) --- 1089#define RADEON_WB_CP1_RPTR_OFFSET 1280 1090#define RADEON_WB_CP2_RPTR_OFFSET 1536 1091#define R600_WB_DMA_RPTR_OFFSET 1792 1092#define R600_WB_IH_WPTR_OFFSET 2048 1093#define CAYMAN_WB_DMA1_RPTR_OFFSET 2304 1094#define R600_WB_EVENT_OFFSET 3072 1095#define CIK_WB_CP1_WPTR_OFFSET 3328 1096#define CIK_WB_CP2_WPTR_OFFSET 3584 | 1005void radeon_ring_undo(struct radeon_ring *ring); 1006void radeon_ring_unlock_undo(struct radeon_device *rdev, struct radeon_ring *cp); 1007int radeon_ring_test(struct radeon_device *rdev, struct radeon_ring *cp); 1008void radeon_ring_lockup_update(struct radeon_device *rdev, 1009 struct radeon_ring *ring); 1010bool radeon_ring_test_lockup(struct radeon_device *rdev, struct radeon_ring *ring); 1011unsigned radeon_ring_backup(struct radeon_device *rdev, struct radeon_ring *ring, 1012 uint32_t **data); --- 119 unchanged lines hidden (view full) --- 1132#define RADEON_WB_CP1_RPTR_OFFSET 1280 1133#define RADEON_WB_CP2_RPTR_OFFSET 1536 1134#define R600_WB_DMA_RPTR_OFFSET 1792 1135#define R600_WB_IH_WPTR_OFFSET 2048 1136#define CAYMAN_WB_DMA1_RPTR_OFFSET 2304 1137#define R600_WB_EVENT_OFFSET 3072 1138#define CIK_WB_CP1_WPTR_OFFSET 3328 1139#define CIK_WB_CP2_WPTR_OFFSET 3584 |
1140#define R600_WB_DMA_RING_TEST_OFFSET 3588 1141#define CAYMAN_WB_DMA1_RING_TEST_OFFSET 3592 |
|
1097 1098/** 1099 * struct radeon_pm - power management datas 1100 * @max_bandwidth: maximum bandwidth the gpu has (MByte/s) 1101 * @igp_sideport_mclk: sideport memory clock Mhz (rs690,rs740,rs780,rs880) 1102 * @igp_system_mclk: system clock Mhz (rs690,rs740,rs780,rs880) 1103 * @igp_ht_link_clk: ht link clock Mhz (rs690,rs740,rs780,rs880) 1104 * @igp_ht_link_width: ht link width in bits (rs690,rs740,rs780,rs880) --- 472 unchanged lines hidden (view full) --- 1577 bool dynpm_can_downclock; 1578 /* profile-based power management */ 1579 enum radeon_pm_profile_type profile; 1580 int profile_index; 1581 struct radeon_pm_profile profiles[PM_PROFILE_MAX]; 1582 /* internal thermal controller on rv6xx+ */ 1583 enum radeon_int_thermal_type int_thermal_type; 1584 struct device *int_hwmon_dev; | 1142 1143/** 1144 * struct radeon_pm - power management datas 1145 * @max_bandwidth: maximum bandwidth the gpu has (MByte/s) 1146 * @igp_sideport_mclk: sideport memory clock Mhz (rs690,rs740,rs780,rs880) 1147 * @igp_system_mclk: system clock Mhz (rs690,rs740,rs780,rs880) 1148 * @igp_ht_link_clk: ht link clock Mhz (rs690,rs740,rs780,rs880) 1149 * @igp_ht_link_width: ht link width in bits (rs690,rs740,rs780,rs880) --- 472 unchanged lines hidden (view full) --- 1622 bool dynpm_can_downclock; 1623 /* profile-based power management */ 1624 enum radeon_pm_profile_type profile; 1625 int profile_index; 1626 struct radeon_pm_profile profiles[PM_PROFILE_MAX]; 1627 /* internal thermal controller on rv6xx+ */ 1628 enum radeon_int_thermal_type int_thermal_type; 1629 struct device *int_hwmon_dev; |
1630 /* fan control parameters */ 1631 bool no_fan; 1632 u8 fan_pulses_per_revolution; 1633 u8 fan_min_rpm; 1634 u8 fan_max_rpm; |
|
1585 /* dpm */ 1586 bool dpm_enabled; 1587 struct radeon_dpm dpm; 1588}; 1589 1590int radeon_pm_get_type_index(struct radeon_device *rdev, 1591 enum radeon_pm_state_type ps_type, 1592 int instance); --- 18 unchanged lines hidden (view full) --- 1611int radeon_uvd_init(struct radeon_device *rdev); 1612void radeon_uvd_fini(struct radeon_device *rdev); 1613int radeon_uvd_suspend(struct radeon_device *rdev); 1614int radeon_uvd_resume(struct radeon_device *rdev); 1615int radeon_uvd_get_create_msg(struct radeon_device *rdev, int ring, 1616 uint32_t handle, struct radeon_fence **fence); 1617int radeon_uvd_get_destroy_msg(struct radeon_device *rdev, int ring, 1618 uint32_t handle, struct radeon_fence **fence); | 1635 /* dpm */ 1636 bool dpm_enabled; 1637 struct radeon_dpm dpm; 1638}; 1639 1640int radeon_pm_get_type_index(struct radeon_device *rdev, 1641 enum radeon_pm_state_type ps_type, 1642 int instance); --- 18 unchanged lines hidden (view full) --- 1661int radeon_uvd_init(struct radeon_device *rdev); 1662void radeon_uvd_fini(struct radeon_device *rdev); 1663int radeon_uvd_suspend(struct radeon_device *rdev); 1664int radeon_uvd_resume(struct radeon_device *rdev); 1665int radeon_uvd_get_create_msg(struct radeon_device *rdev, int ring, 1666 uint32_t handle, struct radeon_fence **fence); 1667int radeon_uvd_get_destroy_msg(struct radeon_device *rdev, int ring, 1668 uint32_t handle, struct radeon_fence **fence); |
1619void radeon_uvd_force_into_uvd_segment(struct radeon_bo *rbo); | 1669void radeon_uvd_force_into_uvd_segment(struct radeon_bo *rbo, 1670 uint32_t allowed_domains); |
1620void radeon_uvd_free_handles(struct radeon_device *rdev, 1621 struct drm_file *filp); 1622int radeon_uvd_cs_parse(struct radeon_cs_parser *parser); 1623void radeon_uvd_note_usage(struct radeon_device *rdev); 1624int radeon_uvd_calc_upll_dividers(struct radeon_device *rdev, 1625 unsigned vclk, unsigned dclk, 1626 unsigned vco_min, unsigned vco_max, 1627 unsigned fb_factor, unsigned fb_mask, --- 72 unchanged lines hidden (view full) --- 1700 * Testing 1701 */ 1702void radeon_test_moves(struct radeon_device *rdev); 1703void radeon_test_ring_sync(struct radeon_device *rdev, 1704 struct radeon_ring *cpA, 1705 struct radeon_ring *cpB); 1706void radeon_test_syncing(struct radeon_device *rdev); 1707 | 1671void radeon_uvd_free_handles(struct radeon_device *rdev, 1672 struct drm_file *filp); 1673int radeon_uvd_cs_parse(struct radeon_cs_parser *parser); 1674void radeon_uvd_note_usage(struct radeon_device *rdev); 1675int radeon_uvd_calc_upll_dividers(struct radeon_device *rdev, 1676 unsigned vclk, unsigned dclk, 1677 unsigned vco_min, unsigned vco_max, 1678 unsigned fb_factor, unsigned fb_mask, --- 72 unchanged lines hidden (view full) --- 1751 * Testing 1752 */ 1753void radeon_test_moves(struct radeon_device *rdev); 1754void radeon_test_ring_sync(struct radeon_device *rdev, 1755 struct radeon_ring *cpA, 1756 struct radeon_ring *cpB); 1757void radeon_test_syncing(struct radeon_device *rdev); 1758 |
1759/* 1760 * MMU Notifier 1761 */ 1762int radeon_mn_register(struct radeon_bo *bo, unsigned long addr); 1763void radeon_mn_unregister(struct radeon_bo *bo); |
|
1708 1709/* 1710 * Debugfs 1711 */ 1712struct radeon_debugfs { 1713 struct drm_info_list *files; 1714 unsigned num_files; 1715}; --- 14 unchanged lines hidden (view full) --- 1730 1731 /* validating and patching of IBs */ 1732 int (*ib_parse)(struct radeon_device *rdev, struct radeon_ib *ib); 1733 int (*cs_parse)(struct radeon_cs_parser *p); 1734 1735 /* command emmit functions */ 1736 void (*ib_execute)(struct radeon_device *rdev, struct radeon_ib *ib); 1737 void (*emit_fence)(struct radeon_device *rdev, struct radeon_fence *fence); | 1764 1765/* 1766 * Debugfs 1767 */ 1768struct radeon_debugfs { 1769 struct drm_info_list *files; 1770 unsigned num_files; 1771}; --- 14 unchanged lines hidden (view full) --- 1786 1787 /* validating and patching of IBs */ 1788 int (*ib_parse)(struct radeon_device *rdev, struct radeon_ib *ib); 1789 int (*cs_parse)(struct radeon_cs_parser *p); 1790 1791 /* command emmit functions */ 1792 void (*ib_execute)(struct radeon_device *rdev, struct radeon_ib *ib); 1793 void (*emit_fence)(struct radeon_device *rdev, struct radeon_fence *fence); |
1794 void (*hdp_flush)(struct radeon_device *rdev, struct radeon_ring *ring); |
|
1738 bool (*emit_semaphore)(struct radeon_device *rdev, struct radeon_ring *cp, 1739 struct radeon_semaphore *semaphore, bool emit_wait); 1740 void (*vm_flush)(struct radeon_device *rdev, int ridx, struct radeon_vm *vm); 1741 1742 /* testing functions */ 1743 int (*ring_test)(struct radeon_device *rdev, struct radeon_ring *cp); 1744 int (*ib_test)(struct radeon_device *rdev, struct radeon_ring *cp); 1745 bool (*is_lockup)(struct radeon_device *rdev, struct radeon_ring *cp); --- 7 unchanged lines hidden (view full) --- 1753 */ 1754struct radeon_asic { 1755 int (*init)(struct radeon_device *rdev); 1756 void (*fini)(struct radeon_device *rdev); 1757 int (*resume)(struct radeon_device *rdev); 1758 int (*suspend)(struct radeon_device *rdev); 1759 void (*vga_set_state)(struct radeon_device *rdev, bool state); 1760 int (*asic_reset)(struct radeon_device *rdev); | 1795 bool (*emit_semaphore)(struct radeon_device *rdev, struct radeon_ring *cp, 1796 struct radeon_semaphore *semaphore, bool emit_wait); 1797 void (*vm_flush)(struct radeon_device *rdev, int ridx, struct radeon_vm *vm); 1798 1799 /* testing functions */ 1800 int (*ring_test)(struct radeon_device *rdev, struct radeon_ring *cp); 1801 int (*ib_test)(struct radeon_device *rdev, struct radeon_ring *cp); 1802 bool (*is_lockup)(struct radeon_device *rdev, struct radeon_ring *cp); --- 7 unchanged lines hidden (view full) --- 1810 */ 1811struct radeon_asic { 1812 int (*init)(struct radeon_device *rdev); 1813 void (*fini)(struct radeon_device *rdev); 1814 int (*resume)(struct radeon_device *rdev); 1815 int (*suspend)(struct radeon_device *rdev); 1816 void (*vga_set_state)(struct radeon_device *rdev, bool state); 1817 int (*asic_reset)(struct radeon_device *rdev); |
1761 /* ioctl hw specific callback. Some hw might want to perform special 1762 * operation on specific ioctl. For instance on wait idle some hw 1763 * might want to perform and HDP flush through MMIO as it seems that 1764 * some R6XX/R7XX hw doesn't take HDP flush into account if programmed 1765 * through ring. 1766 */ 1767 void (*ioctl_wait_idle)(struct radeon_device *rdev, struct radeon_bo *bo); | 1818 /* Flush the HDP cache via MMIO */ 1819 void (*mmio_hdp_flush)(struct radeon_device *rdev); |
1768 /* check if 3D engine is idle */ 1769 bool (*gui_idle)(struct radeon_device *rdev); 1770 /* wait for mc_idle */ 1771 int (*mc_wait_for_idle)(struct radeon_device *rdev); 1772 /* get the reference clock */ 1773 u32 (*get_xclk)(struct radeon_device *rdev); 1774 /* get the gpu clock counter */ 1775 uint64_t (*get_gpu_clock_counter)(struct radeon_device *rdev); 1776 /* gart */ 1777 struct { 1778 void (*tlb_flush)(struct radeon_device *rdev); 1779 void (*set_page)(struct radeon_device *rdev, unsigned i, | 1820 /* check if 3D engine is idle */ 1821 bool (*gui_idle)(struct radeon_device *rdev); 1822 /* wait for mc_idle */ 1823 int (*mc_wait_for_idle)(struct radeon_device *rdev); 1824 /* get the reference clock */ 1825 u32 (*get_xclk)(struct radeon_device *rdev); 1826 /* get the gpu clock counter */ 1827 uint64_t (*get_gpu_clock_counter)(struct radeon_device *rdev); 1828 /* gart */ 1829 struct { 1830 void (*tlb_flush)(struct radeon_device *rdev); 1831 void (*set_page)(struct radeon_device *rdev, unsigned i, |
1780 uint64_t addr); | 1832 uint64_t addr, uint32_t flags); |
1781 } gart; 1782 struct { 1783 int (*init)(struct radeon_device *rdev); 1784 void (*fini)(struct radeon_device *rdev); | 1833 } gart; 1834 struct { 1835 int (*init)(struct radeon_device *rdev); 1836 void (*fini)(struct radeon_device *rdev); |
1785 void (*set_page)(struct radeon_device *rdev, 1786 struct radeon_ib *ib, 1787 uint64_t pe, 1788 uint64_t addr, unsigned count, 1789 uint32_t incr, uint32_t flags); | 1837 void (*copy_pages)(struct radeon_device *rdev, 1838 struct radeon_ib *ib, 1839 uint64_t pe, uint64_t src, 1840 unsigned count); 1841 void (*write_pages)(struct radeon_device *rdev, 1842 struct radeon_ib *ib, 1843 uint64_t pe, 1844 uint64_t addr, unsigned count, 1845 uint32_t incr, uint32_t flags); 1846 void (*set_pages)(struct radeon_device *rdev, 1847 struct radeon_ib *ib, 1848 uint64_t pe, 1849 uint64_t addr, unsigned count, 1850 uint32_t incr, uint32_t flags); 1851 void (*pad_ib)(struct radeon_ib *ib); |
1790 } vm; 1791 /* ring specific callbacks */ 1792 struct radeon_asic_ring *ring[RADEON_NUM_RINGS]; 1793 /* irqs */ 1794 struct { 1795 int (*set)(struct radeon_device *rdev); 1796 int (*process)(struct radeon_device *rdev); 1797 } irq; --- 10 unchanged lines hidden (view full) --- 1808 /* get backlight level */ 1809 u8 (*get_backlight_level)(struct radeon_encoder *radeon_encoder); 1810 /* audio callbacks */ 1811 void (*hdmi_enable)(struct drm_encoder *encoder, bool enable); 1812 void (*hdmi_setmode)(struct drm_encoder *encoder, struct drm_display_mode *mode); 1813 } display; 1814 /* copy functions for bo handling */ 1815 struct { | 1852 } vm; 1853 /* ring specific callbacks */ 1854 struct radeon_asic_ring *ring[RADEON_NUM_RINGS]; 1855 /* irqs */ 1856 struct { 1857 int (*set)(struct radeon_device *rdev); 1858 int (*process)(struct radeon_device *rdev); 1859 } irq; --- 10 unchanged lines hidden (view full) --- 1870 /* get backlight level */ 1871 u8 (*get_backlight_level)(struct radeon_encoder *radeon_encoder); 1872 /* audio callbacks */ 1873 void (*hdmi_enable)(struct drm_encoder *encoder, bool enable); 1874 void (*hdmi_setmode)(struct drm_encoder *encoder, struct drm_display_mode *mode); 1875 } display; 1876 /* copy functions for bo handling */ 1877 struct { |
1816 int (*blit)(struct radeon_device *rdev, 1817 uint64_t src_offset, 1818 uint64_t dst_offset, 1819 unsigned num_gpu_pages, 1820 struct radeon_fence **fence); | 1878 struct radeon_fence *(*blit)(struct radeon_device *rdev, 1879 uint64_t src_offset, 1880 uint64_t dst_offset, 1881 unsigned num_gpu_pages, 1882 struct reservation_object *resv); |
1821 u32 blit_ring_index; | 1883 u32 blit_ring_index; |
1822 int (*dma)(struct radeon_device *rdev, 1823 uint64_t src_offset, 1824 uint64_t dst_offset, 1825 unsigned num_gpu_pages, 1826 struct radeon_fence **fence); | 1884 struct radeon_fence *(*dma)(struct radeon_device *rdev, 1885 uint64_t src_offset, 1886 uint64_t dst_offset, 1887 unsigned num_gpu_pages, 1888 struct reservation_object *resv); |
1827 u32 dma_ring_index; 1828 /* method used for bo copy */ | 1889 u32 dma_ring_index; 1890 /* method used for bo copy */ |
1829 int (*copy)(struct radeon_device *rdev, 1830 uint64_t src_offset, 1831 uint64_t dst_offset, 1832 unsigned num_gpu_pages, 1833 struct radeon_fence **fence); | 1891 struct radeon_fence *(*copy)(struct radeon_device *rdev, 1892 uint64_t src_offset, 1893 uint64_t dst_offset, 1894 unsigned num_gpu_pages, 1895 struct reservation_object *resv); |
1834 /* ring used for bo copies */ 1835 u32 copy_ring_index; 1836 } copy; 1837 /* surfaces */ 1838 struct { 1839 int (*set_reg)(struct radeon_device *rdev, int reg, 1840 uint32_t tiling_flags, uint32_t pitch, 1841 uint32_t offset, uint32_t obj_size); --- 265 unchanged lines hidden (view full) --- 2107 2108/* 2109 * IOCTL. 2110 */ 2111int radeon_gem_info_ioctl(struct drm_device *dev, void *data, 2112 struct drm_file *filp); 2113int radeon_gem_create_ioctl(struct drm_device *dev, void *data, 2114 struct drm_file *filp); | 1896 /* ring used for bo copies */ 1897 u32 copy_ring_index; 1898 } copy; 1899 /* surfaces */ 1900 struct { 1901 int (*set_reg)(struct radeon_device *rdev, int reg, 1902 uint32_t tiling_flags, uint32_t pitch, 1903 uint32_t offset, uint32_t obj_size); --- 265 unchanged lines hidden (view full) --- 2169 2170/* 2171 * IOCTL. 2172 */ 2173int radeon_gem_info_ioctl(struct drm_device *dev, void *data, 2174 struct drm_file *filp); 2175int radeon_gem_create_ioctl(struct drm_device *dev, void *data, 2176 struct drm_file *filp); |
2177int radeon_gem_userptr_ioctl(struct drm_device *dev, void *data, 2178 struct drm_file *filp); |
|
2115int radeon_gem_pin_ioctl(struct drm_device *dev, void *data, 2116 struct drm_file *file_priv); 2117int radeon_gem_unpin_ioctl(struct drm_device *dev, void *data, 2118 struct drm_file *file_priv); 2119int radeon_gem_pwrite_ioctl(struct drm_device *dev, void *data, 2120 struct drm_file *file_priv); 2121int radeon_gem_pread_ioctl(struct drm_device *dev, void *data, 2122 struct drm_file *file_priv); --- 140 unchanged lines hidden (view full) --- 2263 struct radeon_mc mc; 2264 struct radeon_gart gart; 2265 struct radeon_mode_info mode_info; 2266 struct radeon_scratch scratch; 2267 struct radeon_doorbell doorbell; 2268 struct radeon_mman mman; 2269 struct radeon_fence_driver fence_drv[RADEON_NUM_RINGS]; 2270 wait_queue_head_t fence_queue; | 2179int radeon_gem_pin_ioctl(struct drm_device *dev, void *data, 2180 struct drm_file *file_priv); 2181int radeon_gem_unpin_ioctl(struct drm_device *dev, void *data, 2182 struct drm_file *file_priv); 2183int radeon_gem_pwrite_ioctl(struct drm_device *dev, void *data, 2184 struct drm_file *file_priv); 2185int radeon_gem_pread_ioctl(struct drm_device *dev, void *data, 2186 struct drm_file *file_priv); --- 140 unchanged lines hidden (view full) --- 2327 struct radeon_mc mc; 2328 struct radeon_gart gart; 2329 struct radeon_mode_info mode_info; 2330 struct radeon_scratch scratch; 2331 struct radeon_doorbell doorbell; 2332 struct radeon_mman mman; 2333 struct radeon_fence_driver fence_drv[RADEON_NUM_RINGS]; 2334 wait_queue_head_t fence_queue; |
2335 unsigned fence_context; |
|
2271 struct mutex ring_lock; 2272 struct radeon_ring ring[RADEON_NUM_RINGS]; 2273 bool ib_pool_ready; 2274 struct radeon_sa_manager ring_tmp_bo; 2275 struct radeon_irq irq; 2276 struct radeon_asic *asic; 2277 struct radeon_gem gem; 2278 struct radeon_pm pm; 2279 struct radeon_uvd uvd; 2280 struct radeon_vce vce; 2281 uint32_t bios_scratch[RADEON_BIOS_NUM_SCRATCH]; 2282 struct radeon_wb wb; 2283 struct radeon_dummy_page dummy_page; 2284 bool shutdown; 2285 bool suspend; 2286 bool need_dma32; 2287 bool accel_working; 2288 bool fastfb_working; /* IGP feature*/ | 2336 struct mutex ring_lock; 2337 struct radeon_ring ring[RADEON_NUM_RINGS]; 2338 bool ib_pool_ready; 2339 struct radeon_sa_manager ring_tmp_bo; 2340 struct radeon_irq irq; 2341 struct radeon_asic *asic; 2342 struct radeon_gem gem; 2343 struct radeon_pm pm; 2344 struct radeon_uvd uvd; 2345 struct radeon_vce vce; 2346 uint32_t bios_scratch[RADEON_BIOS_NUM_SCRATCH]; 2347 struct radeon_wb wb; 2348 struct radeon_dummy_page dummy_page; 2349 bool shutdown; 2350 bool suspend; 2351 bool need_dma32; 2352 bool accel_working; 2353 bool fastfb_working; /* IGP feature*/ |
2289 bool needs_reset; | 2354 bool needs_reset, in_reset; |
2290 struct radeon_surface_reg surface_regs[RADEON_GEM_MAX_SURFACES]; 2291 const struct firmware *me_fw; /* all family ME firmware */ 2292 const struct firmware *pfp_fw; /* r6/700 PFP firmware */ 2293 const struct firmware *rlc_fw; /* r6/700 RLC firmware */ 2294 const struct firmware *mc_fw; /* NI MC firmware */ 2295 const struct firmware *ce_fw; /* SI CE firmware */ 2296 const struct firmware *mec_fw; /* CIK MEC firmware */ | 2355 struct radeon_surface_reg surface_regs[RADEON_GEM_MAX_SURFACES]; 2356 const struct firmware *me_fw; /* all family ME firmware */ 2357 const struct firmware *pfp_fw; /* r6/700 PFP firmware */ 2358 const struct firmware *rlc_fw; /* r6/700 RLC firmware */ 2359 const struct firmware *mc_fw; /* NI MC firmware */ 2360 const struct firmware *ce_fw; /* SI CE firmware */ 2361 const struct firmware *mec_fw; /* CIK MEC firmware */ |
2362 const struct firmware *mec2_fw; /* KV MEC2 firmware */ |
|
2297 const struct firmware *sdma_fw; /* CIK SDMA firmware */ 2298 const struct firmware *smc_fw; /* SMC firmware */ 2299 const struct firmware *uvd_fw; /* UVD firmware */ 2300 const struct firmware *vce_fw; /* VCE firmware */ | 2363 const struct firmware *sdma_fw; /* CIK SDMA firmware */ 2364 const struct firmware *smc_fw; /* SMC firmware */ 2365 const struct firmware *uvd_fw; /* UVD firmware */ 2366 const struct firmware *vce_fw; /* VCE firmware */ |
2367 bool new_fw; |
|
2301 struct r600_vram_scratch vram_scratch; 2302 int msi_enabled; /* msi enabled */ 2303 struct r600_ih ih; /* r6/700 interrupt ring */ 2304 struct radeon_rlc rlc; 2305 struct radeon_mec mec; 2306 struct work_struct hotplug_work; 2307 struct work_struct audio_work; | 2368 struct r600_vram_scratch vram_scratch; 2369 int msi_enabled; /* msi enabled */ 2370 struct r600_ih ih; /* r6/700 interrupt ring */ 2371 struct radeon_rlc rlc; 2372 struct radeon_mec mec; 2373 struct work_struct hotplug_work; 2374 struct work_struct audio_work; |
2308 struct work_struct reset_work; | |
2309 int num_crtc; /* number of crtcs */ 2310 struct mutex dc_hw_i2c_mutex; /* display controller hw i2c mutex */ 2311 bool has_uvd; 2312 struct r600_audio audio; /* audio stuff */ 2313 struct notifier_block acpi_nb; 2314 /* only one userspace can use Hyperz features or CMASK at a time */ 2315 struct drm_file *hyperz_filp; 2316 struct drm_file *cmask_filp; --- 9 unchanged lines hidden (view full) --- 2326 atomic64_t vram_usage; 2327 atomic64_t gtt_usage; 2328 atomic64_t num_bytes_moved; 2329 /* ACPI interface */ 2330 struct radeon_atif atif; 2331 struct radeon_atcs atcs; 2332 /* srbm instance registers */ 2333 struct mutex srbm_mutex; | 2375 int num_crtc; /* number of crtcs */ 2376 struct mutex dc_hw_i2c_mutex; /* display controller hw i2c mutex */ 2377 bool has_uvd; 2378 struct r600_audio audio; /* audio stuff */ 2379 struct notifier_block acpi_nb; 2380 /* only one userspace can use Hyperz features or CMASK at a time */ 2381 struct drm_file *hyperz_filp; 2382 struct drm_file *cmask_filp; --- 9 unchanged lines hidden (view full) --- 2392 atomic64_t vram_usage; 2393 atomic64_t gtt_usage; 2394 atomic64_t num_bytes_moved; 2395 /* ACPI interface */ 2396 struct radeon_atif atif; 2397 struct radeon_atcs atcs; 2398 /* srbm instance registers */ 2399 struct mutex srbm_mutex; |
2400 /* GRBM index mutex. Protects concurrents access to GRBM index */ 2401 struct mutex grbm_idx_mutex; |
|
2334 /* clock, powergating flags */ 2335 u32 cg_flags; 2336 u32 pg_flags; 2337 2338 struct dev_pm_domain vga_pm_domain; 2339 bool have_disp_power_ref; | 2402 /* clock, powergating flags */ 2403 u32 cg_flags; 2404 u32 pg_flags; 2405 2406 struct dev_pm_domain vga_pm_domain; 2407 bool have_disp_power_ref; |
2408 u32 px_quirk_flags; 2409 2410 /* tracking pinned memory */ 2411 u64 vram_pin_size; 2412 u64 gart_pin_size; 2413 2414 struct mutex mn_lock; 2415 DECLARE_HASHTABLE(mn_hash, 7); |
|
2340}; 2341 2342bool radeon_is_px(struct drm_device *dev); 2343int radeon_device_init(struct radeon_device *rdev, 2344 struct drm_device *ddev, 2345 struct pci_dev *pdev, 2346 uint32_t flags); 2347void radeon_device_fini(struct radeon_device *rdev); 2348int radeon_gpu_wait_for_idle(struct radeon_device *rdev); 2349 | 2416}; 2417 2418bool radeon_is_px(struct drm_device *dev); 2419int radeon_device_init(struct radeon_device *rdev, 2420 struct drm_device *ddev, 2421 struct pci_dev *pdev, 2422 uint32_t flags); 2423void radeon_device_fini(struct radeon_device *rdev); 2424int radeon_gpu_wait_for_idle(struct radeon_device *rdev); 2425 |
2350uint32_t r100_mm_rreg(struct radeon_device *rdev, uint32_t reg, 2351 bool always_indirect); 2352void r100_mm_wreg(struct radeon_device *rdev, uint32_t reg, uint32_t v, 2353 bool always_indirect); | 2426#define RADEON_MIN_MMIO_SIZE 0x10000 2427 2428static inline uint32_t r100_mm_rreg(struct radeon_device *rdev, uint32_t reg, 2429 bool always_indirect) 2430{ 2431 /* The mmio size is 64kb at minimum. Allows the if to be optimized out. */ 2432 if ((reg < rdev->rmmio_size || reg < RADEON_MIN_MMIO_SIZE) && !always_indirect) 2433 return readl(((void __iomem *)rdev->rmmio) + reg); 2434 else { 2435 unsigned long flags; 2436 uint32_t ret; 2437 2438 spin_lock_irqsave(&rdev->mmio_idx_lock, flags); 2439 writel(reg, ((void __iomem *)rdev->rmmio) + RADEON_MM_INDEX); 2440 ret = readl(((void __iomem *)rdev->rmmio) + RADEON_MM_DATA); 2441 spin_unlock_irqrestore(&rdev->mmio_idx_lock, flags); 2442 2443 return ret; 2444 } 2445} 2446 2447static inline void r100_mm_wreg(struct radeon_device *rdev, uint32_t reg, uint32_t v, 2448 bool always_indirect) 2449{ 2450 if ((reg < rdev->rmmio_size || reg < RADEON_MIN_MMIO_SIZE) && !always_indirect) 2451 writel(v, ((void __iomem *)rdev->rmmio) + reg); 2452 else { 2453 unsigned long flags; 2454 2455 spin_lock_irqsave(&rdev->mmio_idx_lock, flags); 2456 writel(reg, ((void __iomem *)rdev->rmmio) + RADEON_MM_INDEX); 2457 writel(v, ((void __iomem *)rdev->rmmio) + RADEON_MM_DATA); 2458 spin_unlock_irqrestore(&rdev->mmio_idx_lock, flags); 2459 } 2460} 2461 |
2354u32 r100_io_rreg(struct radeon_device *rdev, u32 reg); 2355void r100_io_wreg(struct radeon_device *rdev, u32 reg, u32 v); 2356 2357u32 cik_mm_rdoorbell(struct radeon_device *rdev, u32 index); 2358void cik_mm_wdoorbell(struct radeon_device *rdev, u32 index, u32 v); 2359 2360/* 2361 * Cast helper 2362 */ | 2462u32 r100_io_rreg(struct radeon_device *rdev, u32 reg); 2463void r100_io_wreg(struct radeon_device *rdev, u32 reg, u32 v); 2464 2465u32 cik_mm_rdoorbell(struct radeon_device *rdev, u32 index); 2466void cik_mm_wdoorbell(struct radeon_device *rdev, u32 index, u32 v); 2467 2468/* 2469 * Cast helper 2470 */ |
2363#define to_radeon_fence(p) ((struct radeon_fence *)(p)) | 2471extern const struct fence_ops radeon_fence_ops; |
2364 | 2472 |
2473static inline struct radeon_fence *to_radeon_fence(struct fence *f) 2474{ 2475 struct radeon_fence *__f = container_of(f, struct radeon_fence, base); 2476 2477 if (__f->base.ops == &radeon_fence_ops) 2478 return __f; 2479 2480 return NULL; 2481} 2482 |
|
2365/* 2366 * Registers read & write functions. 2367 */ 2368#define RREG8(reg) readb((rdev->rmmio) + (reg)) 2369#define WREG8(reg, v) writeb(v, (rdev->rmmio) + (reg)) 2370#define RREG16(reg) readw((rdev->rmmio) + (reg)) 2371#define WREG16(reg, v) writew(v, (rdev->rmmio) + (reg)) 2372#define RREG32(reg) r100_mm_rreg(rdev, (reg), false) --- 302 unchanged lines hidden (view full) --- 2675void radeon_combios_fini(struct radeon_device *rdev); 2676int radeon_atombios_init(struct radeon_device *rdev); 2677void radeon_atombios_fini(struct radeon_device *rdev); 2678 2679 2680/* 2681 * RING helpers. 2682 */ | 2483/* 2484 * Registers read & write functions. 2485 */ 2486#define RREG8(reg) readb((rdev->rmmio) + (reg)) 2487#define WREG8(reg, v) writeb(v, (rdev->rmmio) + (reg)) 2488#define RREG16(reg) readw((rdev->rmmio) + (reg)) 2489#define WREG16(reg, v) writew(v, (rdev->rmmio) + (reg)) 2490#define RREG32(reg) r100_mm_rreg(rdev, (reg), false) --- 302 unchanged lines hidden (view full) --- 2793void radeon_combios_fini(struct radeon_device *rdev); 2794int radeon_atombios_init(struct radeon_device *rdev); 2795void radeon_atombios_fini(struct radeon_device *rdev); 2796 2797 2798/* 2799 * RING helpers. 2800 */ |
2683#if DRM_DEBUG_CODE == 0 | 2801 2802/** 2803 * radeon_ring_write - write a value to the ring 2804 * 2805 * @ring: radeon_ring structure holding ring information 2806 * @v: dword (dw) value to write 2807 * 2808 * Write a value to the requested ring buffer (all asics). 2809 */ |
2684static inline void radeon_ring_write(struct radeon_ring *ring, uint32_t v) 2685{ | 2810static inline void radeon_ring_write(struct radeon_ring *ring, uint32_t v) 2811{ |
2812 if (ring->count_dw <= 0) 2813 DRM_ERROR("radeon: writing more dwords to the ring than expected!\n"); 2814 |
|
2686 ring->ring[ring->wptr++] = v; 2687 ring->wptr &= ring->ptr_mask; 2688 ring->count_dw--; 2689 ring->ring_free_dw--; 2690} | 2815 ring->ring[ring->wptr++] = v; 2816 ring->wptr &= ring->ptr_mask; 2817 ring->count_dw--; 2818 ring->ring_free_dw--; 2819} |
2691#else 2692/* With debugging this is just too big to inline */ 2693void radeon_ring_write(struct radeon_ring *ring, uint32_t v); 2694#endif | |
2695 2696/* 2697 * ASICs macro. 2698 */ 2699#define radeon_init(rdev) (rdev)->asic->init((rdev)) 2700#define radeon_fini(rdev) (rdev)->asic->fini((rdev)) 2701#define radeon_resume(rdev) (rdev)->asic->resume((rdev)) 2702#define radeon_suspend(rdev) (rdev)->asic->suspend((rdev)) 2703#define radeon_cs_parse(rdev, r, p) (rdev)->asic->ring[(r)]->cs_parse((p)) 2704#define radeon_vga_set_state(rdev, state) (rdev)->asic->vga_set_state((rdev), (state)) 2705#define radeon_asic_reset(rdev) (rdev)->asic->asic_reset((rdev)) 2706#define radeon_gart_tlb_flush(rdev) (rdev)->asic->gart.tlb_flush((rdev)) | 2820 2821/* 2822 * ASICs macro. 2823 */ 2824#define radeon_init(rdev) (rdev)->asic->init((rdev)) 2825#define radeon_fini(rdev) (rdev)->asic->fini((rdev)) 2826#define radeon_resume(rdev) (rdev)->asic->resume((rdev)) 2827#define radeon_suspend(rdev) (rdev)->asic->suspend((rdev)) 2828#define radeon_cs_parse(rdev, r, p) (rdev)->asic->ring[(r)]->cs_parse((p)) 2829#define radeon_vga_set_state(rdev, state) (rdev)->asic->vga_set_state((rdev), (state)) 2830#define radeon_asic_reset(rdev) (rdev)->asic->asic_reset((rdev)) 2831#define radeon_gart_tlb_flush(rdev) (rdev)->asic->gart.tlb_flush((rdev)) |
2707#define radeon_gart_set_page(rdev, i, p) (rdev)->asic->gart.set_page((rdev), (i), (p)) | 2832#define radeon_gart_set_page(rdev, i, p, f) (rdev)->asic->gart.set_page((rdev), (i), (p), (f)) |
2708#define radeon_asic_vm_init(rdev) (rdev)->asic->vm.init((rdev)) 2709#define radeon_asic_vm_fini(rdev) (rdev)->asic->vm.fini((rdev)) | 2833#define radeon_asic_vm_init(rdev) (rdev)->asic->vm.init((rdev)) 2834#define radeon_asic_vm_fini(rdev) (rdev)->asic->vm.fini((rdev)) |
2710#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))) | 2835#define radeon_asic_vm_copy_pages(rdev, ib, pe, src, count) ((rdev)->asic->vm.copy_pages((rdev), (ib), (pe), (src), (count))) 2836#define radeon_asic_vm_write_pages(rdev, ib, pe, addr, count, incr, flags) ((rdev)->asic->vm.write_pages((rdev), (ib), (pe), (addr), (count), (incr), (flags))) 2837#define radeon_asic_vm_set_pages(rdev, ib, pe, addr, count, incr, flags) ((rdev)->asic->vm.set_pages((rdev), (ib), (pe), (addr), (count), (incr), (flags))) 2838#define radeon_asic_vm_pad_ib(rdev, ib) ((rdev)->asic->vm.pad_ib((ib))) |
2711#define radeon_ring_start(rdev, r, cp) (rdev)->asic->ring[(r)]->ring_start((rdev), (cp)) 2712#define radeon_ring_test(rdev, r, cp) (rdev)->asic->ring[(r)]->ring_test((rdev), (cp)) 2713#define radeon_ib_test(rdev, r, cp) (rdev)->asic->ring[(r)]->ib_test((rdev), (cp)) 2714#define radeon_ring_ib_execute(rdev, r, ib) (rdev)->asic->ring[(r)]->ib_execute((rdev), (ib)) 2715#define radeon_ring_ib_parse(rdev, r, ib) (rdev)->asic->ring[(r)]->ib_parse((rdev), (ib)) 2716#define radeon_ring_is_lockup(rdev, r, cp) (rdev)->asic->ring[(r)]->is_lockup((rdev), (cp)) 2717#define radeon_ring_vm_flush(rdev, r, vm) (rdev)->asic->ring[(r)]->vm_flush((rdev), (r), (vm)) 2718#define radeon_ring_get_rptr(rdev, r) (rdev)->asic->ring[(r)->idx]->get_rptr((rdev), (r)) 2719#define radeon_ring_get_wptr(rdev, r) (rdev)->asic->ring[(r)->idx]->get_wptr((rdev), (r)) 2720#define radeon_ring_set_wptr(rdev, r) (rdev)->asic->ring[(r)->idx]->set_wptr((rdev), (r)) 2721#define radeon_irq_set(rdev) (rdev)->asic->irq.set((rdev)) 2722#define radeon_irq_process(rdev) (rdev)->asic->irq.process((rdev)) 2723#define radeon_get_vblank_counter(rdev, crtc) (rdev)->asic->display.get_vblank_counter((rdev), (crtc)) 2724#define radeon_set_backlight_level(rdev, e, l) (rdev)->asic->display.set_backlight_level((e), (l)) 2725#define radeon_get_backlight_level(rdev, e) (rdev)->asic->display.get_backlight_level((e)) 2726#define radeon_hdmi_enable(rdev, e, b) (rdev)->asic->display.hdmi_enable((e), (b)) 2727#define radeon_hdmi_setmode(rdev, e, m) (rdev)->asic->display.hdmi_setmode((e), (m)) 2728#define radeon_fence_ring_emit(rdev, r, fence) (rdev)->asic->ring[(r)]->emit_fence((rdev), (fence)) 2729#define radeon_semaphore_ring_emit(rdev, r, cp, semaphore, emit_wait) (rdev)->asic->ring[(r)]->emit_semaphore((rdev), (cp), (semaphore), (emit_wait)) | 2839#define radeon_ring_start(rdev, r, cp) (rdev)->asic->ring[(r)]->ring_start((rdev), (cp)) 2840#define radeon_ring_test(rdev, r, cp) (rdev)->asic->ring[(r)]->ring_test((rdev), (cp)) 2841#define radeon_ib_test(rdev, r, cp) (rdev)->asic->ring[(r)]->ib_test((rdev), (cp)) 2842#define radeon_ring_ib_execute(rdev, r, ib) (rdev)->asic->ring[(r)]->ib_execute((rdev), (ib)) 2843#define radeon_ring_ib_parse(rdev, r, ib) (rdev)->asic->ring[(r)]->ib_parse((rdev), (ib)) 2844#define radeon_ring_is_lockup(rdev, r, cp) (rdev)->asic->ring[(r)]->is_lockup((rdev), (cp)) 2845#define radeon_ring_vm_flush(rdev, r, vm) (rdev)->asic->ring[(r)]->vm_flush((rdev), (r), (vm)) 2846#define radeon_ring_get_rptr(rdev, r) (rdev)->asic->ring[(r)->idx]->get_rptr((rdev), (r)) 2847#define radeon_ring_get_wptr(rdev, r) (rdev)->asic->ring[(r)->idx]->get_wptr((rdev), (r)) 2848#define radeon_ring_set_wptr(rdev, r) (rdev)->asic->ring[(r)->idx]->set_wptr((rdev), (r)) 2849#define radeon_irq_set(rdev) (rdev)->asic->irq.set((rdev)) 2850#define radeon_irq_process(rdev) (rdev)->asic->irq.process((rdev)) 2851#define radeon_get_vblank_counter(rdev, crtc) (rdev)->asic->display.get_vblank_counter((rdev), (crtc)) 2852#define radeon_set_backlight_level(rdev, e, l) (rdev)->asic->display.set_backlight_level((e), (l)) 2853#define radeon_get_backlight_level(rdev, e) (rdev)->asic->display.get_backlight_level((e)) 2854#define radeon_hdmi_enable(rdev, e, b) (rdev)->asic->display.hdmi_enable((e), (b)) 2855#define radeon_hdmi_setmode(rdev, e, m) (rdev)->asic->display.hdmi_setmode((e), (m)) 2856#define radeon_fence_ring_emit(rdev, r, fence) (rdev)->asic->ring[(r)]->emit_fence((rdev), (fence)) 2857#define radeon_semaphore_ring_emit(rdev, r, cp, semaphore, emit_wait) (rdev)->asic->ring[(r)]->emit_semaphore((rdev), (cp), (semaphore), (emit_wait)) |
2730#define radeon_copy_blit(rdev, s, d, np, f) (rdev)->asic->copy.blit((rdev), (s), (d), (np), (f)) 2731#define radeon_copy_dma(rdev, s, d, np, f) (rdev)->asic->copy.dma((rdev), (s), (d), (np), (f)) 2732#define radeon_copy(rdev, s, d, np, f) (rdev)->asic->copy.copy((rdev), (s), (d), (np), (f)) | 2858#define radeon_copy_blit(rdev, s, d, np, resv) (rdev)->asic->copy.blit((rdev), (s), (d), (np), (resv)) 2859#define radeon_copy_dma(rdev, s, d, np, resv) (rdev)->asic->copy.dma((rdev), (s), (d), (np), (resv)) 2860#define radeon_copy(rdev, s, d, np, resv) (rdev)->asic->copy.copy((rdev), (s), (d), (np), (resv)) |
2733#define radeon_copy_blit_ring_index(rdev) (rdev)->asic->copy.blit_ring_index 2734#define radeon_copy_dma_ring_index(rdev) (rdev)->asic->copy.dma_ring_index 2735#define radeon_copy_ring_index(rdev) (rdev)->asic->copy.copy_ring_index 2736#define radeon_get_engine_clock(rdev) (rdev)->asic->pm.get_engine_clock((rdev)) 2737#define radeon_set_engine_clock(rdev, e) (rdev)->asic->pm.set_engine_clock((rdev), (e)) 2738#define radeon_get_memory_clock(rdev) (rdev)->asic->pm.get_memory_clock((rdev)) 2739#define radeon_set_memory_clock(rdev, e) (rdev)->asic->pm.set_memory_clock((rdev), (e)) 2740#define radeon_get_pcie_lanes(rdev) (rdev)->asic->pm.get_pcie_lanes((rdev)) --- 57 unchanged lines hidden (view full) --- 2798extern int radeon_wb_init(struct radeon_device *rdev); 2799extern void radeon_wb_disable(struct radeon_device *rdev); 2800extern void radeon_surface_init(struct radeon_device *rdev); 2801extern int radeon_cs_parser_init(struct radeon_cs_parser *p, void *data); 2802extern void radeon_legacy_set_clock_gating(struct radeon_device *rdev, int enable); 2803extern void radeon_atom_set_clock_gating(struct radeon_device *rdev, int enable); 2804extern void radeon_ttm_placement_from_domain(struct radeon_bo *rbo, u32 domain); 2805extern bool radeon_ttm_bo_is_radeon_bo(struct ttm_buffer_object *bo); | 2861#define radeon_copy_blit_ring_index(rdev) (rdev)->asic->copy.blit_ring_index 2862#define radeon_copy_dma_ring_index(rdev) (rdev)->asic->copy.dma_ring_index 2863#define radeon_copy_ring_index(rdev) (rdev)->asic->copy.copy_ring_index 2864#define radeon_get_engine_clock(rdev) (rdev)->asic->pm.get_engine_clock((rdev)) 2865#define radeon_set_engine_clock(rdev, e) (rdev)->asic->pm.set_engine_clock((rdev), (e)) 2866#define radeon_get_memory_clock(rdev) (rdev)->asic->pm.get_memory_clock((rdev)) 2867#define radeon_set_memory_clock(rdev, e) (rdev)->asic->pm.set_memory_clock((rdev), (e)) 2868#define radeon_get_pcie_lanes(rdev) (rdev)->asic->pm.get_pcie_lanes((rdev)) --- 57 unchanged lines hidden (view full) --- 2926extern int radeon_wb_init(struct radeon_device *rdev); 2927extern void radeon_wb_disable(struct radeon_device *rdev); 2928extern void radeon_surface_init(struct radeon_device *rdev); 2929extern int radeon_cs_parser_init(struct radeon_cs_parser *p, void *data); 2930extern void radeon_legacy_set_clock_gating(struct radeon_device *rdev, int enable); 2931extern void radeon_atom_set_clock_gating(struct radeon_device *rdev, int enable); 2932extern void radeon_ttm_placement_from_domain(struct radeon_bo *rbo, u32 domain); 2933extern bool radeon_ttm_bo_is_radeon_bo(struct ttm_buffer_object *bo); |
2934extern int radeon_ttm_tt_set_userptr(struct ttm_tt *ttm, uint64_t addr, 2935 uint32_t flags); 2936extern bool radeon_ttm_tt_has_userptr(struct ttm_tt *ttm); 2937extern bool radeon_ttm_tt_is_readonly(struct ttm_tt *ttm); |
|
2806extern void radeon_vram_location(struct radeon_device *rdev, struct radeon_mc *mc, u64 base); 2807extern void radeon_gtt_location(struct radeon_device *rdev, struct radeon_mc *mc); 2808extern int radeon_resume_kms(struct drm_device *dev, bool resume, bool fbcon); 2809extern int radeon_suspend_kms(struct drm_device *dev, bool suspend, bool fbcon); 2810extern void radeon_ttm_set_active_vram_size(struct radeon_device *rdev, u64 size); 2811extern void radeon_program_register_sequence(struct radeon_device *rdev, 2812 const u32 *registers, 2813 const u32 array_size); --- 14 unchanged lines hidden (view full) --- 2828 struct radeon_vm *vm, 2829 int ring); 2830void radeon_vm_fence(struct radeon_device *rdev, 2831 struct radeon_vm *vm, 2832 struct radeon_fence *fence); 2833uint64_t radeon_vm_map_gart(struct radeon_device *rdev, uint64_t addr); 2834int radeon_vm_update_page_directory(struct radeon_device *rdev, 2835 struct radeon_vm *vm); | 2938extern void radeon_vram_location(struct radeon_device *rdev, struct radeon_mc *mc, u64 base); 2939extern void radeon_gtt_location(struct radeon_device *rdev, struct radeon_mc *mc); 2940extern int radeon_resume_kms(struct drm_device *dev, bool resume, bool fbcon); 2941extern int radeon_suspend_kms(struct drm_device *dev, bool suspend, bool fbcon); 2942extern void radeon_ttm_set_active_vram_size(struct radeon_device *rdev, u64 size); 2943extern void radeon_program_register_sequence(struct radeon_device *rdev, 2944 const u32 *registers, 2945 const u32 array_size); --- 14 unchanged lines hidden (view full) --- 2960 struct radeon_vm *vm, 2961 int ring); 2962void radeon_vm_fence(struct radeon_device *rdev, 2963 struct radeon_vm *vm, 2964 struct radeon_fence *fence); 2965uint64_t radeon_vm_map_gart(struct radeon_device *rdev, uint64_t addr); 2966int radeon_vm_update_page_directory(struct radeon_device *rdev, 2967 struct radeon_vm *vm); |
2968int radeon_vm_clear_freed(struct radeon_device *rdev, 2969 struct radeon_vm *vm); 2970int radeon_vm_clear_invalids(struct radeon_device *rdev, 2971 struct radeon_vm *vm); |
|
2836int radeon_vm_bo_update(struct radeon_device *rdev, | 2972int radeon_vm_bo_update(struct radeon_device *rdev, |
2837 struct radeon_vm *vm, 2838 struct radeon_bo *bo, | 2973 struct radeon_bo_va *bo_va, |
2839 struct ttm_mem_reg *mem); 2840void radeon_vm_bo_invalidate(struct radeon_device *rdev, 2841 struct radeon_bo *bo); 2842struct radeon_bo_va *radeon_vm_bo_find(struct radeon_vm *vm, 2843 struct radeon_bo *bo); 2844struct radeon_bo_va *radeon_vm_bo_add(struct radeon_device *rdev, 2845 struct radeon_vm *vm, 2846 struct radeon_bo *bo); 2847int radeon_vm_bo_set_addr(struct radeon_device *rdev, 2848 struct radeon_bo_va *bo_va, 2849 uint64_t offset, 2850 uint32_t flags); | 2974 struct ttm_mem_reg *mem); 2975void radeon_vm_bo_invalidate(struct radeon_device *rdev, 2976 struct radeon_bo *bo); 2977struct radeon_bo_va *radeon_vm_bo_find(struct radeon_vm *vm, 2978 struct radeon_bo *bo); 2979struct radeon_bo_va *radeon_vm_bo_add(struct radeon_device *rdev, 2980 struct radeon_vm *vm, 2981 struct radeon_bo *bo); 2982int radeon_vm_bo_set_addr(struct radeon_device *rdev, 2983 struct radeon_bo_va *bo_va, 2984 uint64_t offset, 2985 uint32_t flags); |
2851int radeon_vm_bo_rmv(struct radeon_device *rdev, 2852 struct radeon_bo_va *bo_va); | 2986void radeon_vm_bo_rmv(struct radeon_device *rdev, 2987 struct radeon_bo_va *bo_va); |
2853 2854/* audio */ 2855void r600_audio_update_hdmi(struct work_struct *work); 2856struct r600_audio_pin *r600_audio_get_pin(struct radeon_device *rdev); 2857struct r600_audio_pin *dce6_audio_get_pin(struct radeon_device *rdev); 2858void r600_audio_enable(struct radeon_device *rdev, 2859 struct r600_audio_pin *pin, | 2988 2989/* audio */ 2990void r600_audio_update_hdmi(struct work_struct *work); 2991struct r600_audio_pin *r600_audio_get_pin(struct radeon_device *rdev); 2992struct r600_audio_pin *dce6_audio_get_pin(struct radeon_device *rdev); 2993void r600_audio_enable(struct radeon_device *rdev, 2994 struct r600_audio_pin *pin, |
2860 bool enable); | 2995 u8 enable_mask); |
2861void dce6_audio_enable(struct radeon_device *rdev, 2862 struct r600_audio_pin *pin, | 2996void dce6_audio_enable(struct radeon_device *rdev, 2997 struct r600_audio_pin *pin, |
2863 bool enable); | 2998 u8 enable_mask); |
2864 2865/* 2866 * R600 vram scratch functions 2867 */ 2868int r600_vram_scratch_init(struct radeon_device *rdev); 2869void r600_vram_scratch_fini(struct radeon_device *rdev); 2870 2871/* --- 70 unchanged lines hidden --- | 2999 3000/* 3001 * R600 vram scratch functions 3002 */ 3003int r600_vram_scratch_init(struct radeon_device *rdev); 3004void r600_vram_scratch_fini(struct radeon_device *rdev); 3005 3006/* --- 70 unchanged lines hidden --- |