.. | .. |
---|
21 | 21 | * |
---|
22 | 22 | * Authors: Alex Deucher |
---|
23 | 23 | */ |
---|
| 24 | + |
---|
24 | 25 | #include <linux/firmware.h> |
---|
25 | | -#include <linux/slab.h> |
---|
26 | 26 | #include <linux/module.h> |
---|
27 | | -#include <drm/drmP.h> |
---|
| 27 | +#include <linux/pci.h> |
---|
| 28 | +#include <linux/slab.h> |
---|
| 29 | + |
---|
| 30 | +#include <drm/drm_vblank.h> |
---|
| 31 | + |
---|
| 32 | +#include "atom.h" |
---|
| 33 | +#include "cik_blit_shaders.h" |
---|
| 34 | +#include "cikd.h" |
---|
| 35 | +#include "clearstate_ci.h" |
---|
28 | 36 | #include "radeon.h" |
---|
29 | 37 | #include "radeon_asic.h" |
---|
30 | 38 | #include "radeon_audio.h" |
---|
31 | | -#include "cikd.h" |
---|
32 | | -#include "atom.h" |
---|
33 | | -#include "cik_blit_shaders.h" |
---|
34 | 39 | #include "radeon_ucode.h" |
---|
35 | | -#include "clearstate_ci.h" |
---|
36 | 40 | |
---|
37 | 41 | #define SH_MEM_CONFIG_GFX_DEFAULT \ |
---|
38 | 42 | ALIGNMENT_MODE(SH_MEM_ALIGNMENT_MODE_UNALIGNED) |
---|
.. | .. |
---|
217 | 221 | else |
---|
218 | 222 | actual_temp = temp & 0x1ff; |
---|
219 | 223 | |
---|
220 | | - actual_temp = actual_temp * 1000; |
---|
221 | | - |
---|
222 | | - return actual_temp; |
---|
| 224 | + return actual_temp * 1000; |
---|
223 | 225 | } |
---|
224 | 226 | |
---|
225 | 227 | /* get temperature in millidegrees */ |
---|
.. | .. |
---|
235 | 237 | else |
---|
236 | 238 | actual_temp = 0; |
---|
237 | 239 | |
---|
238 | | - actual_temp = actual_temp * 1000; |
---|
239 | | - |
---|
240 | | - return actual_temp; |
---|
| 240 | + return actual_temp * 1000; |
---|
241 | 241 | } |
---|
242 | 242 | |
---|
243 | 243 | /* |
---|
.. | .. |
---|
3480 | 3480 | tmp = RREG32(scratch); |
---|
3481 | 3481 | if (tmp == 0xDEADBEEF) |
---|
3482 | 3482 | break; |
---|
3483 | | - DRM_UDELAY(1); |
---|
| 3483 | + udelay(1); |
---|
3484 | 3484 | } |
---|
3485 | 3485 | if (i < rdev->usec_timeout) { |
---|
3486 | 3486 | DRM_INFO("ring test on %d succeeded in %d usecs\n", ring->idx, i); |
---|
.. | .. |
---|
3655 | 3655 | struct radeon_fence *cik_copy_cpdma(struct radeon_device *rdev, |
---|
3656 | 3656 | uint64_t src_offset, uint64_t dst_offset, |
---|
3657 | 3657 | unsigned num_gpu_pages, |
---|
3658 | | - struct reservation_object *resv) |
---|
| 3658 | + struct dma_resv *resv) |
---|
3659 | 3659 | { |
---|
3660 | 3660 | struct radeon_fence *fence; |
---|
3661 | 3661 | struct radeon_sync sync; |
---|
.. | .. |
---|
3825 | 3825 | tmp = RREG32(scratch); |
---|
3826 | 3826 | if (tmp == 0xDEADBEEF) |
---|
3827 | 3827 | break; |
---|
3828 | | - DRM_UDELAY(1); |
---|
| 3828 | + udelay(1); |
---|
3829 | 3829 | } |
---|
3830 | 3830 | if (i < rdev->usec_timeout) { |
---|
3831 | 3831 | DRM_INFO("ib test on ring %d succeeded in %u usecs\n", ib.fence->ring, i); |
---|
.. | .. |
---|
8137 | 8137 | * there. So it is pointless to try to go through that code |
---|
8138 | 8138 | * hence why we disable uvd here. |
---|
8139 | 8139 | */ |
---|
8140 | | - rdev->has_uvd = 0; |
---|
| 8140 | + rdev->has_uvd = false; |
---|
8141 | 8141 | return; |
---|
8142 | 8142 | } |
---|
8143 | 8143 | rdev->ring[R600_RING_TYPE_UVD_INDEX].ring_obj = NULL; |
---|
.. | .. |
---|
8209 | 8209 | * there. So it is pointless to try to go through that code |
---|
8210 | 8210 | * hence why we disable vce here. |
---|
8211 | 8211 | */ |
---|
8212 | | - rdev->has_vce = 0; |
---|
| 8212 | + rdev->has_vce = false; |
---|
8213 | 8213 | return; |
---|
8214 | 8214 | } |
---|
8215 | 8215 | rdev->ring[TN_RING_TYPE_VCE1_INDEX].ring_obj = NULL; |
---|
.. | .. |
---|
9500 | 9500 | { |
---|
9501 | 9501 | struct pci_dev *root = rdev->pdev->bus->self; |
---|
9502 | 9502 | enum pci_bus_speed speed_cap; |
---|
9503 | | - int bridge_pos, gpu_pos; |
---|
9504 | 9503 | u32 speed_cntl, current_data_rate; |
---|
9505 | 9504 | int i; |
---|
9506 | 9505 | u16 tmp16; |
---|
.. | .. |
---|
9542 | 9541 | DRM_INFO("enabling PCIE gen 2 link speeds, disable with radeon.pcie_gen2=0\n"); |
---|
9543 | 9542 | } |
---|
9544 | 9543 | |
---|
9545 | | - bridge_pos = pci_pcie_cap(root); |
---|
9546 | | - if (!bridge_pos) |
---|
9547 | | - return; |
---|
9548 | | - |
---|
9549 | | - gpu_pos = pci_pcie_cap(rdev->pdev); |
---|
9550 | | - if (!gpu_pos) |
---|
| 9544 | + if (!pci_is_pcie(root) || !pci_is_pcie(rdev->pdev)) |
---|
9551 | 9545 | return; |
---|
9552 | 9546 | |
---|
9553 | 9547 | if (speed_cap == PCIE_SPEED_8_0GT) { |
---|
.. | .. |
---|
9557 | 9551 | u16 bridge_cfg2, gpu_cfg2; |
---|
9558 | 9552 | u32 max_lw, current_lw, tmp; |
---|
9559 | 9553 | |
---|
9560 | | - pci_read_config_word(root, bridge_pos + PCI_EXP_LNKCTL, &bridge_cfg); |
---|
9561 | | - pci_read_config_word(rdev->pdev, gpu_pos + PCI_EXP_LNKCTL, &gpu_cfg); |
---|
9562 | | - |
---|
9563 | | - tmp16 = bridge_cfg | PCI_EXP_LNKCTL_HAWD; |
---|
9564 | | - pci_write_config_word(root, bridge_pos + PCI_EXP_LNKCTL, tmp16); |
---|
9565 | | - |
---|
9566 | | - tmp16 = gpu_cfg | PCI_EXP_LNKCTL_HAWD; |
---|
9567 | | - pci_write_config_word(rdev->pdev, gpu_pos + PCI_EXP_LNKCTL, tmp16); |
---|
| 9554 | + pcie_capability_set_word(root, PCI_EXP_LNKCTL, PCI_EXP_LNKCTL_HAWD); |
---|
| 9555 | + pcie_capability_set_word(rdev->pdev, PCI_EXP_LNKCTL, PCI_EXP_LNKCTL_HAWD); |
---|
9568 | 9556 | |
---|
9569 | 9557 | tmp = RREG32_PCIE_PORT(PCIE_LC_STATUS1); |
---|
9570 | 9558 | max_lw = (tmp & LC_DETECTED_LINK_WIDTH_MASK) >> LC_DETECTED_LINK_WIDTH_SHIFT; |
---|
.. | .. |
---|
9582 | 9570 | |
---|
9583 | 9571 | for (i = 0; i < 10; i++) { |
---|
9584 | 9572 | /* check status */ |
---|
9585 | | - pci_read_config_word(rdev->pdev, gpu_pos + PCI_EXP_DEVSTA, &tmp16); |
---|
| 9573 | + pcie_capability_read_word(rdev->pdev, |
---|
| 9574 | + PCI_EXP_DEVSTA, |
---|
| 9575 | + &tmp16); |
---|
9586 | 9576 | if (tmp16 & PCI_EXP_DEVSTA_TRPND) |
---|
9587 | 9577 | break; |
---|
9588 | 9578 | |
---|
9589 | | - pci_read_config_word(root, bridge_pos + PCI_EXP_LNKCTL, &bridge_cfg); |
---|
9590 | | - pci_read_config_word(rdev->pdev, gpu_pos + PCI_EXP_LNKCTL, &gpu_cfg); |
---|
| 9579 | + pcie_capability_read_word(root, PCI_EXP_LNKCTL, |
---|
| 9580 | + &bridge_cfg); |
---|
| 9581 | + pcie_capability_read_word(rdev->pdev, |
---|
| 9582 | + PCI_EXP_LNKCTL, |
---|
| 9583 | + &gpu_cfg); |
---|
9591 | 9584 | |
---|
9592 | | - pci_read_config_word(root, bridge_pos + PCI_EXP_LNKCTL2, &bridge_cfg2); |
---|
9593 | | - pci_read_config_word(rdev->pdev, gpu_pos + PCI_EXP_LNKCTL2, &gpu_cfg2); |
---|
| 9585 | + pcie_capability_read_word(root, PCI_EXP_LNKCTL2, |
---|
| 9586 | + &bridge_cfg2); |
---|
| 9587 | + pcie_capability_read_word(rdev->pdev, |
---|
| 9588 | + PCI_EXP_LNKCTL2, |
---|
| 9589 | + &gpu_cfg2); |
---|
9594 | 9590 | |
---|
9595 | 9591 | tmp = RREG32_PCIE_PORT(PCIE_LC_CNTL4); |
---|
9596 | 9592 | tmp |= LC_SET_QUIESCE; |
---|
.. | .. |
---|
9600 | 9596 | tmp |= LC_REDO_EQ; |
---|
9601 | 9597 | WREG32_PCIE_PORT(PCIE_LC_CNTL4, tmp); |
---|
9602 | 9598 | |
---|
9603 | | - mdelay(100); |
---|
| 9599 | + msleep(100); |
---|
9604 | 9600 | |
---|
9605 | 9601 | /* linkctl */ |
---|
9606 | | - pci_read_config_word(root, bridge_pos + PCI_EXP_LNKCTL, &tmp16); |
---|
9607 | | - tmp16 &= ~PCI_EXP_LNKCTL_HAWD; |
---|
9608 | | - tmp16 |= (bridge_cfg & PCI_EXP_LNKCTL_HAWD); |
---|
9609 | | - pci_write_config_word(root, bridge_pos + PCI_EXP_LNKCTL, tmp16); |
---|
9610 | | - |
---|
9611 | | - pci_read_config_word(rdev->pdev, gpu_pos + PCI_EXP_LNKCTL, &tmp16); |
---|
9612 | | - tmp16 &= ~PCI_EXP_LNKCTL_HAWD; |
---|
9613 | | - tmp16 |= (gpu_cfg & PCI_EXP_LNKCTL_HAWD); |
---|
9614 | | - pci_write_config_word(rdev->pdev, gpu_pos + PCI_EXP_LNKCTL, tmp16); |
---|
| 9602 | + pcie_capability_clear_and_set_word(root, PCI_EXP_LNKCTL, |
---|
| 9603 | + PCI_EXP_LNKCTL_HAWD, |
---|
| 9604 | + bridge_cfg & |
---|
| 9605 | + PCI_EXP_LNKCTL_HAWD); |
---|
| 9606 | + pcie_capability_clear_and_set_word(rdev->pdev, PCI_EXP_LNKCTL, |
---|
| 9607 | + PCI_EXP_LNKCTL_HAWD, |
---|
| 9608 | + gpu_cfg & |
---|
| 9609 | + PCI_EXP_LNKCTL_HAWD); |
---|
9615 | 9610 | |
---|
9616 | 9611 | /* linkctl2 */ |
---|
9617 | | - pci_read_config_word(root, bridge_pos + PCI_EXP_LNKCTL2, &tmp16); |
---|
9618 | | - tmp16 &= ~((1 << 4) | (7 << 9)); |
---|
9619 | | - tmp16 |= (bridge_cfg2 & ((1 << 4) | (7 << 9))); |
---|
9620 | | - pci_write_config_word(root, bridge_pos + PCI_EXP_LNKCTL2, tmp16); |
---|
| 9612 | + pcie_capability_read_word(root, PCI_EXP_LNKCTL2, |
---|
| 9613 | + &tmp16); |
---|
| 9614 | + tmp16 &= ~(PCI_EXP_LNKCTL2_ENTER_COMP | |
---|
| 9615 | + PCI_EXP_LNKCTL2_TX_MARGIN); |
---|
| 9616 | + tmp16 |= (bridge_cfg2 & |
---|
| 9617 | + (PCI_EXP_LNKCTL2_ENTER_COMP | |
---|
| 9618 | + PCI_EXP_LNKCTL2_TX_MARGIN)); |
---|
| 9619 | + pcie_capability_write_word(root, |
---|
| 9620 | + PCI_EXP_LNKCTL2, |
---|
| 9621 | + tmp16); |
---|
9621 | 9622 | |
---|
9622 | | - pci_read_config_word(rdev->pdev, gpu_pos + PCI_EXP_LNKCTL2, &tmp16); |
---|
9623 | | - tmp16 &= ~((1 << 4) | (7 << 9)); |
---|
9624 | | - tmp16 |= (gpu_cfg2 & ((1 << 4) | (7 << 9))); |
---|
9625 | | - pci_write_config_word(rdev->pdev, gpu_pos + PCI_EXP_LNKCTL2, tmp16); |
---|
| 9623 | + pcie_capability_read_word(rdev->pdev, |
---|
| 9624 | + PCI_EXP_LNKCTL2, |
---|
| 9625 | + &tmp16); |
---|
| 9626 | + tmp16 &= ~(PCI_EXP_LNKCTL2_ENTER_COMP | |
---|
| 9627 | + PCI_EXP_LNKCTL2_TX_MARGIN); |
---|
| 9628 | + tmp16 |= (gpu_cfg2 & |
---|
| 9629 | + (PCI_EXP_LNKCTL2_ENTER_COMP | |
---|
| 9630 | + PCI_EXP_LNKCTL2_TX_MARGIN)); |
---|
| 9631 | + pcie_capability_write_word(rdev->pdev, |
---|
| 9632 | + PCI_EXP_LNKCTL2, |
---|
| 9633 | + tmp16); |
---|
9626 | 9634 | |
---|
9627 | 9635 | tmp = RREG32_PCIE_PORT(PCIE_LC_CNTL4); |
---|
9628 | 9636 | tmp &= ~LC_SET_QUIESCE; |
---|
.. | .. |
---|
9636 | 9644 | speed_cntl &= ~LC_FORCE_DIS_SW_SPEED_CHANGE; |
---|
9637 | 9645 | WREG32_PCIE_PORT(PCIE_LC_SPEED_CNTL, speed_cntl); |
---|
9638 | 9646 | |
---|
9639 | | - pci_read_config_word(rdev->pdev, gpu_pos + PCI_EXP_LNKCTL2, &tmp16); |
---|
9640 | | - tmp16 &= ~0xf; |
---|
| 9647 | + pcie_capability_read_word(rdev->pdev, PCI_EXP_LNKCTL2, &tmp16); |
---|
| 9648 | + tmp16 &= ~PCI_EXP_LNKCTL2_TLS; |
---|
9641 | 9649 | if (speed_cap == PCIE_SPEED_8_0GT) |
---|
9642 | | - tmp16 |= 3; /* gen3 */ |
---|
| 9650 | + tmp16 |= PCI_EXP_LNKCTL2_TLS_8_0GT; /* gen3 */ |
---|
9643 | 9651 | else if (speed_cap == PCIE_SPEED_5_0GT) |
---|
9644 | | - tmp16 |= 2; /* gen2 */ |
---|
| 9652 | + tmp16 |= PCI_EXP_LNKCTL2_TLS_5_0GT; /* gen2 */ |
---|
9645 | 9653 | else |
---|
9646 | | - tmp16 |= 1; /* gen1 */ |
---|
9647 | | - pci_write_config_word(rdev->pdev, gpu_pos + PCI_EXP_LNKCTL2, tmp16); |
---|
| 9654 | + tmp16 |= PCI_EXP_LNKCTL2_TLS_2_5GT; /* gen1 */ |
---|
| 9655 | + pcie_capability_write_word(rdev->pdev, PCI_EXP_LNKCTL2, tmp16); |
---|
9648 | 9656 | |
---|
9649 | 9657 | speed_cntl = RREG32_PCIE_PORT(PCIE_LC_SPEED_CNTL); |
---|
9650 | 9658 | speed_cntl |= LC_INITIATE_LINK_SPEED_CHANGE; |
---|