mirror of
https://github.com/AuxXxilium/linux_dsm_epyc7002.git
synced 2024-12-02 08:36:39 +07:00
drm/radeon: remove special handling for the DMA ring
Now that we have callbacks for [rw]ptr handling we can remove the special handling for the DMA rings and use the callbacks instead. Signed-off-by: Christian König <christian.koenig@amd.com> Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
This commit is contained in:
parent
02c9f7fa4e
commit
2e1e6dad6a
@ -3414,7 +3414,6 @@ u32 cik_compute_ring_get_rptr(struct radeon_device *rdev,
|
||||
cik_srbm_select(rdev, 0, 0, 0, 0);
|
||||
mutex_unlock(&rdev->srbm_mutex);
|
||||
}
|
||||
rptr = (rptr & ring->ptr_reg_mask) >> ring->ptr_reg_shift;
|
||||
|
||||
return rptr;
|
||||
}
|
||||
@ -3433,7 +3432,6 @@ u32 cik_compute_ring_get_wptr(struct radeon_device *rdev,
|
||||
cik_srbm_select(rdev, 0, 0, 0, 0);
|
||||
mutex_unlock(&rdev->srbm_mutex);
|
||||
}
|
||||
wptr = (wptr & ring->ptr_reg_mask) >> ring->ptr_reg_shift;
|
||||
|
||||
return wptr;
|
||||
}
|
||||
@ -3441,10 +3439,8 @@ u32 cik_compute_ring_get_wptr(struct radeon_device *rdev,
|
||||
void cik_compute_ring_set_wptr(struct radeon_device *rdev,
|
||||
struct radeon_ring *ring)
|
||||
{
|
||||
u32 wptr = (ring->wptr << ring->ptr_reg_shift) & ring->ptr_reg_mask;
|
||||
|
||||
rdev->wb.wb[ring->wptr_offs/4] = cpu_to_le32(wptr);
|
||||
WDOORBELL32(ring->doorbell_offset, wptr);
|
||||
rdev->wb.wb[ring->wptr_offs/4] = cpu_to_le32(ring->wptr);
|
||||
WDOORBELL32(ring->doorbell_offset, ring->wptr);
|
||||
}
|
||||
|
||||
/**
|
||||
@ -7649,7 +7645,7 @@ static int cik_startup(struct radeon_device *rdev)
|
||||
ring = &rdev->ring[RADEON_RING_TYPE_GFX_INDEX];
|
||||
r = radeon_ring_init(rdev, ring, ring->ring_size, RADEON_WB_CP_RPTR_OFFSET,
|
||||
CP_RB0_RPTR, CP_RB0_WPTR,
|
||||
0, 0xfffff, RADEON_CP_PACKET2);
|
||||
RADEON_CP_PACKET2);
|
||||
if (r)
|
||||
return r;
|
||||
|
||||
@ -7658,7 +7654,7 @@ static int cik_startup(struct radeon_device *rdev)
|
||||
ring = &rdev->ring[CAYMAN_RING_TYPE_CP1_INDEX];
|
||||
r = radeon_ring_init(rdev, ring, ring->ring_size, RADEON_WB_CP1_RPTR_OFFSET,
|
||||
CP_HQD_PQ_RPTR, CP_HQD_PQ_WPTR,
|
||||
0, 0xfffff, PACKET3(PACKET3_NOP, 0x3FFF));
|
||||
PACKET3(PACKET3_NOP, 0x3FFF));
|
||||
if (r)
|
||||
return r;
|
||||
ring->me = 1; /* first MEC */
|
||||
@ -7670,7 +7666,7 @@ static int cik_startup(struct radeon_device *rdev)
|
||||
ring = &rdev->ring[CAYMAN_RING_TYPE_CP2_INDEX];
|
||||
r = radeon_ring_init(rdev, ring, ring->ring_size, RADEON_WB_CP2_RPTR_OFFSET,
|
||||
CP_HQD_PQ_RPTR, CP_HQD_PQ_WPTR,
|
||||
0, 0xffffffff, PACKET3(PACKET3_NOP, 0x3FFF));
|
||||
PACKET3(PACKET3_NOP, 0x3FFF));
|
||||
if (r)
|
||||
return r;
|
||||
/* dGPU only have 1 MEC */
|
||||
@ -7683,7 +7679,7 @@ static int cik_startup(struct radeon_device *rdev)
|
||||
r = radeon_ring_init(rdev, ring, ring->ring_size, R600_WB_DMA_RPTR_OFFSET,
|
||||
SDMA0_GFX_RB_RPTR + SDMA0_REGISTER_OFFSET,
|
||||
SDMA0_GFX_RB_WPTR + SDMA0_REGISTER_OFFSET,
|
||||
2, 0xfffffffc, SDMA_PACKET(SDMA_OPCODE_NOP, 0, 0));
|
||||
SDMA_PACKET(SDMA_OPCODE_NOP, 0, 0));
|
||||
if (r)
|
||||
return r;
|
||||
|
||||
@ -7691,7 +7687,7 @@ static int cik_startup(struct radeon_device *rdev)
|
||||
r = radeon_ring_init(rdev, ring, ring->ring_size, CAYMAN_WB_DMA1_RPTR_OFFSET,
|
||||
SDMA0_GFX_RB_RPTR + SDMA1_REGISTER_OFFSET,
|
||||
SDMA0_GFX_RB_WPTR + SDMA1_REGISTER_OFFSET,
|
||||
2, 0xfffffffc, SDMA_PACKET(SDMA_OPCODE_NOP, 0, 0));
|
||||
SDMA_PACKET(SDMA_OPCODE_NOP, 0, 0));
|
||||
if (r)
|
||||
return r;
|
||||
|
||||
@ -7707,7 +7703,7 @@ static int cik_startup(struct radeon_device *rdev)
|
||||
if (ring->ring_size) {
|
||||
r = radeon_ring_init(rdev, ring, ring->ring_size, 0,
|
||||
UVD_RBC_RB_RPTR, UVD_RBC_RB_WPTR,
|
||||
0, 0xfffff, RADEON_CP_PACKET2);
|
||||
RADEON_CP_PACKET2);
|
||||
if (!r)
|
||||
r = r600_uvd_init(rdev, true);
|
||||
if (r)
|
||||
|
@ -5268,14 +5268,14 @@ static int evergreen_startup(struct radeon_device *rdev)
|
||||
ring = &rdev->ring[RADEON_RING_TYPE_GFX_INDEX];
|
||||
r = radeon_ring_init(rdev, ring, ring->ring_size, RADEON_WB_CP_RPTR_OFFSET,
|
||||
R600_CP_RB_RPTR, R600_CP_RB_WPTR,
|
||||
0, 0xfffff, RADEON_CP_PACKET2);
|
||||
RADEON_CP_PACKET2);
|
||||
if (r)
|
||||
return r;
|
||||
|
||||
ring = &rdev->ring[R600_RING_TYPE_DMA_INDEX];
|
||||
r = radeon_ring_init(rdev, ring, ring->ring_size, R600_WB_DMA_RPTR_OFFSET,
|
||||
DMA_RB_RPTR, DMA_RB_WPTR,
|
||||
2, 0x3fffc, DMA_PACKET(DMA_PACKET_NOP, 0, 0));
|
||||
DMA_PACKET(DMA_PACKET_NOP, 0, 0));
|
||||
if (r)
|
||||
return r;
|
||||
|
||||
@ -5293,7 +5293,7 @@ static int evergreen_startup(struct radeon_device *rdev)
|
||||
if (ring->ring_size) {
|
||||
r = radeon_ring_init(rdev, ring, ring->ring_size, 0,
|
||||
UVD_RBC_RB_RPTR, UVD_RBC_RB_WPTR,
|
||||
0, 0xfffff, RADEON_CP_PACKET2);
|
||||
RADEON_CP_PACKET2);
|
||||
if (!r)
|
||||
r = r600_uvd_init(rdev, true);
|
||||
|
||||
|
@ -2192,7 +2192,7 @@ static int cayman_startup(struct radeon_device *rdev)
|
||||
|
||||
r = radeon_ring_init(rdev, ring, ring->ring_size, RADEON_WB_CP_RPTR_OFFSET,
|
||||
CP_RB0_RPTR, CP_RB0_WPTR,
|
||||
0, 0xfffff, RADEON_CP_PACKET2);
|
||||
RADEON_CP_PACKET2);
|
||||
if (r)
|
||||
return r;
|
||||
|
||||
@ -2200,7 +2200,7 @@ static int cayman_startup(struct radeon_device *rdev)
|
||||
r = radeon_ring_init(rdev, ring, ring->ring_size, R600_WB_DMA_RPTR_OFFSET,
|
||||
DMA_RB_RPTR + DMA0_REGISTER_OFFSET,
|
||||
DMA_RB_WPTR + DMA0_REGISTER_OFFSET,
|
||||
2, 0x3fffc, DMA_PACKET(DMA_PACKET_NOP, 0, 0, 0));
|
||||
DMA_PACKET(DMA_PACKET_NOP, 0, 0, 0));
|
||||
if (r)
|
||||
return r;
|
||||
|
||||
@ -2208,7 +2208,7 @@ static int cayman_startup(struct radeon_device *rdev)
|
||||
r = radeon_ring_init(rdev, ring, ring->ring_size, CAYMAN_WB_DMA1_RPTR_OFFSET,
|
||||
DMA_RB_RPTR + DMA1_REGISTER_OFFSET,
|
||||
DMA_RB_WPTR + DMA1_REGISTER_OFFSET,
|
||||
2, 0x3fffc, DMA_PACKET(DMA_PACKET_NOP, 0, 0, 0));
|
||||
DMA_PACKET(DMA_PACKET_NOP, 0, 0, 0));
|
||||
if (r)
|
||||
return r;
|
||||
|
||||
@ -2227,7 +2227,7 @@ static int cayman_startup(struct radeon_device *rdev)
|
||||
if (ring->ring_size) {
|
||||
r = radeon_ring_init(rdev, ring, ring->ring_size, 0,
|
||||
UVD_RBC_RB_RPTR, UVD_RBC_RB_WPTR,
|
||||
0, 0xfffff, RADEON_CP_PACKET2);
|
||||
RADEON_CP_PACKET2);
|
||||
if (!r)
|
||||
r = r600_uvd_init(rdev, true);
|
||||
if (r)
|
||||
|
@ -1102,7 +1102,7 @@ int r100_cp_init(struct radeon_device *rdev, unsigned ring_size)
|
||||
r100_cp_load_microcode(rdev);
|
||||
r = radeon_ring_init(rdev, ring, ring_size, RADEON_WB_CP_RPTR_OFFSET,
|
||||
RADEON_CP_RB_RPTR, RADEON_CP_RB_WPTR,
|
||||
0, 0x7fffff, RADEON_CP_PACKET2);
|
||||
RADEON_CP_PACKET2);
|
||||
if (r) {
|
||||
return r;
|
||||
}
|
||||
|
@ -2504,6 +2504,49 @@ void r600_cp_fini(struct radeon_device *rdev)
|
||||
* solid fills, and a number of other things. It also
|
||||
* has support for tiling/detiling of buffers.
|
||||
*/
|
||||
|
||||
/**
|
||||
* r600_dma_get_rptr - get the current read pointer
|
||||
*
|
||||
* @rdev: radeon_device pointer
|
||||
* @ring: radeon ring pointer
|
||||
*
|
||||
* Get the current rptr from the hardware (r6xx+).
|
||||
*/
|
||||
uint32_t r600_dma_get_rptr(struct radeon_device *rdev,
|
||||
struct radeon_ring *ring)
|
||||
{
|
||||
return (radeon_ring_generic_get_rptr(rdev, ring) & 0x3fffc) >> 2;
|
||||
}
|
||||
|
||||
/**
|
||||
* r600_dma_get_wptr - get the current write pointer
|
||||
*
|
||||
* @rdev: radeon_device pointer
|
||||
* @ring: radeon ring pointer
|
||||
*
|
||||
* Get the current wptr from the hardware (r6xx+).
|
||||
*/
|
||||
uint32_t r600_dma_get_wptr(struct radeon_device *rdev,
|
||||
struct radeon_ring *ring)
|
||||
{
|
||||
return (RREG32(ring->wptr_reg) & 0x3fffc) >> 2;
|
||||
}
|
||||
|
||||
/**
|
||||
* r600_dma_set_wptr - commit the write pointer
|
||||
*
|
||||
* @rdev: radeon_device pointer
|
||||
* @ring: radeon ring pointer
|
||||
*
|
||||
* Write the wptr back to the hardware (r6xx+).
|
||||
*/
|
||||
void r600_dma_set_wptr(struct radeon_device *rdev,
|
||||
struct radeon_ring *ring)
|
||||
{
|
||||
WREG32(ring->wptr_reg, (ring->wptr << 2) & 0x3fffc);
|
||||
}
|
||||
|
||||
/**
|
||||
* r600_dma_stop - stop the async dma engine
|
||||
*
|
||||
@ -3386,14 +3429,14 @@ static int r600_startup(struct radeon_device *rdev)
|
||||
ring = &rdev->ring[RADEON_RING_TYPE_GFX_INDEX];
|
||||
r = radeon_ring_init(rdev, ring, ring->ring_size, RADEON_WB_CP_RPTR_OFFSET,
|
||||
R600_CP_RB_RPTR, R600_CP_RB_WPTR,
|
||||
0, 0xfffff, RADEON_CP_PACKET2);
|
||||
RADEON_CP_PACKET2);
|
||||
if (r)
|
||||
return r;
|
||||
|
||||
ring = &rdev->ring[R600_RING_TYPE_DMA_INDEX];
|
||||
r = radeon_ring_init(rdev, ring, ring->ring_size, R600_WB_DMA_RPTR_OFFSET,
|
||||
DMA_RB_RPTR, DMA_RB_WPTR,
|
||||
2, 0x3fffc, DMA_PACKET(DMA_PACKET_NOP, 0, 0, 0));
|
||||
DMA_PACKET(DMA_PACKET_NOP, 0, 0, 0));
|
||||
if (r)
|
||||
return r;
|
||||
|
||||
|
@ -760,8 +760,6 @@ struct radeon_ring {
|
||||
uint32_t align_mask;
|
||||
uint32_t ptr_mask;
|
||||
bool ready;
|
||||
u32 ptr_reg_shift;
|
||||
u32 ptr_reg_mask;
|
||||
u32 nop;
|
||||
u32 idx;
|
||||
u64 last_semaphore_signal_addr;
|
||||
@ -912,8 +910,7 @@ unsigned radeon_ring_backup(struct radeon_device *rdev, struct radeon_ring *ring
|
||||
int radeon_ring_restore(struct radeon_device *rdev, struct radeon_ring *ring,
|
||||
unsigned size, uint32_t *data);
|
||||
int radeon_ring_init(struct radeon_device *rdev, struct radeon_ring *cp, unsigned ring_size,
|
||||
unsigned rptr_offs, unsigned rptr_reg, unsigned wptr_reg,
|
||||
u32 ptr_reg_shift, u32 ptr_reg_mask, u32 nop);
|
||||
unsigned rptr_offs, unsigned rptr_reg, unsigned wptr_reg, u32 nop);
|
||||
void radeon_ring_fini(struct radeon_device *rdev, struct radeon_ring *cp);
|
||||
|
||||
|
||||
|
@ -896,9 +896,9 @@ static struct radeon_asic_ring r600_dma_ring = {
|
||||
.ring_test = &r600_dma_ring_test,
|
||||
.ib_test = &r600_dma_ib_test,
|
||||
.is_lockup = &r600_dma_is_lockup,
|
||||
.get_rptr = &radeon_ring_generic_get_rptr,
|
||||
.get_wptr = &radeon_ring_generic_get_wptr,
|
||||
.set_wptr = &radeon_ring_generic_set_wptr,
|
||||
.get_rptr = &r600_dma_get_rptr,
|
||||
.get_wptr = &r600_dma_get_wptr,
|
||||
.set_wptr = &r600_dma_set_wptr,
|
||||
};
|
||||
|
||||
static struct radeon_asic r600_asic = {
|
||||
@ -1275,9 +1275,9 @@ static struct radeon_asic_ring evergreen_dma_ring = {
|
||||
.ring_test = &r600_dma_ring_test,
|
||||
.ib_test = &r600_dma_ib_test,
|
||||
.is_lockup = &evergreen_dma_is_lockup,
|
||||
.get_rptr = &radeon_ring_generic_get_rptr,
|
||||
.get_wptr = &radeon_ring_generic_get_wptr,
|
||||
.set_wptr = &radeon_ring_generic_set_wptr,
|
||||
.get_rptr = &r600_dma_get_rptr,
|
||||
.get_wptr = &r600_dma_get_wptr,
|
||||
.set_wptr = &r600_dma_set_wptr,
|
||||
};
|
||||
|
||||
static struct radeon_asic evergreen_asic = {
|
||||
@ -1580,9 +1580,9 @@ static struct radeon_asic_ring cayman_dma_ring = {
|
||||
.ib_test = &r600_dma_ib_test,
|
||||
.is_lockup = &cayman_dma_is_lockup,
|
||||
.vm_flush = &cayman_dma_vm_flush,
|
||||
.get_rptr = &radeon_ring_generic_get_rptr,
|
||||
.get_wptr = &radeon_ring_generic_get_wptr,
|
||||
.set_wptr = &radeon_ring_generic_set_wptr
|
||||
.get_rptr = &r600_dma_get_rptr,
|
||||
.get_wptr = &r600_dma_get_wptr,
|
||||
.set_wptr = &r600_dma_set_wptr
|
||||
};
|
||||
|
||||
static struct radeon_asic_ring cayman_uvd_ring = {
|
||||
@ -1822,9 +1822,9 @@ static struct radeon_asic_ring si_dma_ring = {
|
||||
.ib_test = &r600_dma_ib_test,
|
||||
.is_lockup = &si_dma_is_lockup,
|
||||
.vm_flush = &si_dma_vm_flush,
|
||||
.get_rptr = &radeon_ring_generic_get_rptr,
|
||||
.get_wptr = &radeon_ring_generic_get_wptr,
|
||||
.set_wptr = &radeon_ring_generic_set_wptr,
|
||||
.get_rptr = &r600_dma_get_rptr,
|
||||
.get_wptr = &r600_dma_get_wptr,
|
||||
.set_wptr = &r600_dma_set_wptr,
|
||||
};
|
||||
|
||||
static struct radeon_asic si_asic = {
|
||||
@ -1966,9 +1966,9 @@ static struct radeon_asic_ring ci_dma_ring = {
|
||||
.ib_test = &cik_sdma_ib_test,
|
||||
.is_lockup = &cik_sdma_is_lockup,
|
||||
.vm_flush = &cik_dma_vm_flush,
|
||||
.get_rptr = &radeon_ring_generic_get_rptr,
|
||||
.get_wptr = &radeon_ring_generic_get_wptr,
|
||||
.set_wptr = &radeon_ring_generic_set_wptr,
|
||||
.get_rptr = &r600_dma_get_rptr,
|
||||
.get_wptr = &r600_dma_get_wptr,
|
||||
.set_wptr = &r600_dma_set_wptr,
|
||||
};
|
||||
|
||||
static struct radeon_asic ci_asic = {
|
||||
|
@ -392,6 +392,13 @@ uint64_t r600_get_gpu_clock_counter(struct radeon_device *rdev);
|
||||
int rv6xx_get_temp(struct radeon_device *rdev);
|
||||
int r600_dpm_pre_set_power_state(struct radeon_device *rdev);
|
||||
void r600_dpm_post_set_power_state(struct radeon_device *rdev);
|
||||
/* r600 dma */
|
||||
uint32_t r600_dma_get_rptr(struct radeon_device *rdev,
|
||||
struct radeon_ring *ring);
|
||||
uint32_t r600_dma_get_wptr(struct radeon_device *rdev,
|
||||
struct radeon_ring *ring);
|
||||
void r600_dma_set_wptr(struct radeon_device *rdev,
|
||||
struct radeon_ring *ring);
|
||||
/* rv6xx dpm */
|
||||
int rv6xx_dpm_init(struct radeon_device *rdev);
|
||||
int rv6xx_dpm_enable(struct radeon_device *rdev);
|
||||
|
@ -367,7 +367,6 @@ u32 radeon_ring_generic_get_rptr(struct radeon_device *rdev,
|
||||
rptr = le32_to_cpu(rdev->wb.wb[ring->rptr_offs/4]);
|
||||
else
|
||||
rptr = RREG32(ring->rptr_reg);
|
||||
rptr = (rptr & ring->ptr_reg_mask) >> ring->ptr_reg_shift;
|
||||
|
||||
return rptr;
|
||||
}
|
||||
@ -378,7 +377,6 @@ u32 radeon_ring_generic_get_wptr(struct radeon_device *rdev,
|
||||
u32 wptr;
|
||||
|
||||
wptr = RREG32(ring->wptr_reg);
|
||||
wptr = (wptr & ring->ptr_reg_mask) >> ring->ptr_reg_shift;
|
||||
|
||||
return wptr;
|
||||
}
|
||||
@ -386,7 +384,7 @@ u32 radeon_ring_generic_get_wptr(struct radeon_device *rdev,
|
||||
void radeon_ring_generic_set_wptr(struct radeon_device *rdev,
|
||||
struct radeon_ring *ring)
|
||||
{
|
||||
WREG32(ring->wptr_reg, (ring->wptr << ring->ptr_reg_shift) & ring->ptr_reg_mask);
|
||||
WREG32(ring->wptr_reg, ring->wptr);
|
||||
(void)RREG32(ring->wptr_reg);
|
||||
}
|
||||
|
||||
@ -719,16 +717,13 @@ int radeon_ring_restore(struct radeon_device *rdev, struct radeon_ring *ring,
|
||||
* @rptr_offs: offset of the rptr writeback location in the WB buffer
|
||||
* @rptr_reg: MMIO offset of the rptr register
|
||||
* @wptr_reg: MMIO offset of the wptr register
|
||||
* @ptr_reg_shift: bit offset of the rptr/wptr values
|
||||
* @ptr_reg_mask: bit mask of the rptr/wptr values
|
||||
* @nop: nop packet for this ring
|
||||
*
|
||||
* Initialize the driver information for the selected ring (all asics).
|
||||
* Returns 0 on success, error on failure.
|
||||
*/
|
||||
int radeon_ring_init(struct radeon_device *rdev, struct radeon_ring *ring, unsigned ring_size,
|
||||
unsigned rptr_offs, unsigned rptr_reg, unsigned wptr_reg,
|
||||
u32 ptr_reg_shift, u32 ptr_reg_mask, u32 nop)
|
||||
unsigned rptr_offs, unsigned rptr_reg, unsigned wptr_reg, u32 nop)
|
||||
{
|
||||
int r;
|
||||
|
||||
@ -736,8 +731,6 @@ int radeon_ring_init(struct radeon_device *rdev, struct radeon_ring *ring, unsig
|
||||
ring->rptr_offs = rptr_offs;
|
||||
ring->rptr_reg = rptr_reg;
|
||||
ring->wptr_reg = wptr_reg;
|
||||
ring->ptr_reg_shift = ptr_reg_shift;
|
||||
ring->ptr_reg_mask = ptr_reg_mask;
|
||||
ring->nop = nop;
|
||||
/* Allocate ring buffer */
|
||||
if (ring->ring_obj == NULL) {
|
||||
|
@ -1899,14 +1899,14 @@ static int rv770_startup(struct radeon_device *rdev)
|
||||
ring = &rdev->ring[RADEON_RING_TYPE_GFX_INDEX];
|
||||
r = radeon_ring_init(rdev, ring, ring->ring_size, RADEON_WB_CP_RPTR_OFFSET,
|
||||
R600_CP_RB_RPTR, R600_CP_RB_WPTR,
|
||||
0, 0xfffff, RADEON_CP_PACKET2);
|
||||
RADEON_CP_PACKET2);
|
||||
if (r)
|
||||
return r;
|
||||
|
||||
ring = &rdev->ring[R600_RING_TYPE_DMA_INDEX];
|
||||
r = radeon_ring_init(rdev, ring, ring->ring_size, R600_WB_DMA_RPTR_OFFSET,
|
||||
DMA_RB_RPTR, DMA_RB_WPTR,
|
||||
2, 0x3fffc, DMA_PACKET(DMA_PACKET_NOP, 0, 0, 0));
|
||||
DMA_PACKET(DMA_PACKET_NOP, 0, 0, 0));
|
||||
if (r)
|
||||
return r;
|
||||
|
||||
@ -1925,7 +1925,7 @@ static int rv770_startup(struct radeon_device *rdev)
|
||||
if (ring->ring_size) {
|
||||
r = radeon_ring_init(rdev, ring, ring->ring_size, 0,
|
||||
UVD_RBC_RB_RPTR, UVD_RBC_RB_WPTR,
|
||||
0, 0xfffff, RADEON_CP_PACKET2);
|
||||
RADEON_CP_PACKET2);
|
||||
if (!r)
|
||||
r = r600_uvd_init(rdev, true);
|
||||
|
||||
|
@ -6368,21 +6368,21 @@ static int si_startup(struct radeon_device *rdev)
|
||||
ring = &rdev->ring[RADEON_RING_TYPE_GFX_INDEX];
|
||||
r = radeon_ring_init(rdev, ring, ring->ring_size, RADEON_WB_CP_RPTR_OFFSET,
|
||||
CP_RB0_RPTR, CP_RB0_WPTR,
|
||||
0, 0xfffff, RADEON_CP_PACKET2);
|
||||
RADEON_CP_PACKET2);
|
||||
if (r)
|
||||
return r;
|
||||
|
||||
ring = &rdev->ring[CAYMAN_RING_TYPE_CP1_INDEX];
|
||||
r = radeon_ring_init(rdev, ring, ring->ring_size, RADEON_WB_CP1_RPTR_OFFSET,
|
||||
CP_RB1_RPTR, CP_RB1_WPTR,
|
||||
0, 0xfffff, RADEON_CP_PACKET2);
|
||||
RADEON_CP_PACKET2);
|
||||
if (r)
|
||||
return r;
|
||||
|
||||
ring = &rdev->ring[CAYMAN_RING_TYPE_CP2_INDEX];
|
||||
r = radeon_ring_init(rdev, ring, ring->ring_size, RADEON_WB_CP2_RPTR_OFFSET,
|
||||
CP_RB2_RPTR, CP_RB2_WPTR,
|
||||
0, 0xfffff, RADEON_CP_PACKET2);
|
||||
RADEON_CP_PACKET2);
|
||||
if (r)
|
||||
return r;
|
||||
|
||||
@ -6390,7 +6390,7 @@ static int si_startup(struct radeon_device *rdev)
|
||||
r = radeon_ring_init(rdev, ring, ring->ring_size, R600_WB_DMA_RPTR_OFFSET,
|
||||
DMA_RB_RPTR + DMA0_REGISTER_OFFSET,
|
||||
DMA_RB_WPTR + DMA0_REGISTER_OFFSET,
|
||||
2, 0x3fffc, DMA_PACKET(DMA_PACKET_NOP, 0, 0, 0, 0));
|
||||
DMA_PACKET(DMA_PACKET_NOP, 0, 0, 0, 0));
|
||||
if (r)
|
||||
return r;
|
||||
|
||||
@ -6398,7 +6398,7 @@ static int si_startup(struct radeon_device *rdev)
|
||||
r = radeon_ring_init(rdev, ring, ring->ring_size, CAYMAN_WB_DMA1_RPTR_OFFSET,
|
||||
DMA_RB_RPTR + DMA1_REGISTER_OFFSET,
|
||||
DMA_RB_WPTR + DMA1_REGISTER_OFFSET,
|
||||
2, 0x3fffc, DMA_PACKET(DMA_PACKET_NOP, 0, 0, 0, 0));
|
||||
DMA_PACKET(DMA_PACKET_NOP, 0, 0, 0, 0));
|
||||
if (r)
|
||||
return r;
|
||||
|
||||
@ -6418,7 +6418,7 @@ static int si_startup(struct radeon_device *rdev)
|
||||
if (ring->ring_size) {
|
||||
r = radeon_ring_init(rdev, ring, ring->ring_size, 0,
|
||||
UVD_RBC_RB_RPTR, UVD_RBC_RB_WPTR,
|
||||
0, 0xfffff, RADEON_CP_PACKET2);
|
||||
RADEON_CP_PACKET2);
|
||||
if (!r)
|
||||
r = r600_uvd_init(rdev, true);
|
||||
if (r)
|
||||
|
Loading…
Reference in New Issue
Block a user