mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2026-08-25 19:28:33 -04:00
drm/amdgpu: Delete check_soft_reset() from amd_ip_funcs
This function is not called from anywhere anymore and every implementation was bogus. Some implementations checked busy flags of the IP blocks, which are not really indicative of whether the block is hung and needs to be reset. For example the blocks could be busy just normally executing submissions, and not need to be reset. Other implementations checked IB tests, which is actually more useful, but could still just indicate that an IP block is executing submissions normally. It is also unnecessary because the GPU recovery code path already knows which ring is hung so we know exactly what we need to reset. Just delete check_soft_reset() entirely. Reviewed-by: Alex Deucher <alexander.deucher@amd.com> Signed-off-by: Timur Kristóf <timur.kristof@gmail.com> Reviewed-by: Christian König <christian.koenig@amd.com> Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
This commit is contained in:
committed by
Alex Deucher
parent
64e31a35eb
commit
947e46eb2f
@@ -5259,30 +5259,6 @@ static int gfx_v11_0_soft_reset(struct amdgpu_ip_block *ip_block)
|
||||
return gfx_v11_0_cp_resume(adev);
|
||||
}
|
||||
|
||||
static bool gfx_v11_0_check_soft_reset(struct amdgpu_ip_block *ip_block)
|
||||
{
|
||||
int i, r;
|
||||
struct amdgpu_device *adev = ip_block->adev;
|
||||
struct amdgpu_ring *ring;
|
||||
long tmo = msecs_to_jiffies(1000);
|
||||
|
||||
for (i = 0; i < adev->gfx.num_gfx_rings; i++) {
|
||||
ring = &adev->gfx.gfx_ring[i];
|
||||
r = amdgpu_ring_test_ib(ring, tmo);
|
||||
if (r)
|
||||
return true;
|
||||
}
|
||||
|
||||
for (i = 0; i < adev->gfx.num_compute_rings; i++) {
|
||||
ring = &adev->gfx.compute_ring[i];
|
||||
r = amdgpu_ring_test_ib(ring, tmo);
|
||||
if (r)
|
||||
return true;
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
static int gfx_v11_0_post_soft_reset(struct amdgpu_ip_block *ip_block)
|
||||
{
|
||||
struct amdgpu_device *adev = ip_block->adev;
|
||||
@@ -7015,7 +6991,6 @@ static const struct amd_ip_funcs gfx_v11_0_ip_funcs = {
|
||||
.is_idle = gfx_v11_0_is_idle,
|
||||
.wait_for_idle = gfx_v11_0_wait_for_idle,
|
||||
.soft_reset = gfx_v11_0_soft_reset,
|
||||
.check_soft_reset = gfx_v11_0_check_soft_reset,
|
||||
.post_soft_reset = gfx_v11_0_post_soft_reset,
|
||||
.set_clockgating_state = gfx_v11_0_set_clockgating_state,
|
||||
.set_powergating_state = gfx_v11_0_set_powergating_state,
|
||||
|
||||
@@ -4891,68 +4891,6 @@ static int gfx_v8_0_resume(struct amdgpu_ip_block *ip_block)
|
||||
return gfx_v8_0_hw_init(ip_block);
|
||||
}
|
||||
|
||||
static bool gfx_v8_0_check_soft_reset(struct amdgpu_ip_block *ip_block)
|
||||
{
|
||||
struct amdgpu_device *adev = ip_block->adev;
|
||||
u32 grbm_soft_reset = 0, srbm_soft_reset = 0;
|
||||
u32 tmp;
|
||||
|
||||
/* GRBM_STATUS */
|
||||
tmp = RREG32(mmGRBM_STATUS);
|
||||
if (tmp & (GRBM_STATUS__PA_BUSY_MASK | GRBM_STATUS__SC_BUSY_MASK |
|
||||
GRBM_STATUS__BCI_BUSY_MASK | GRBM_STATUS__SX_BUSY_MASK |
|
||||
GRBM_STATUS__TA_BUSY_MASK | GRBM_STATUS__VGT_BUSY_MASK |
|
||||
GRBM_STATUS__DB_BUSY_MASK | GRBM_STATUS__CB_BUSY_MASK |
|
||||
GRBM_STATUS__GDS_BUSY_MASK | GRBM_STATUS__SPI_BUSY_MASK |
|
||||
GRBM_STATUS__IA_BUSY_MASK | GRBM_STATUS__IA_BUSY_NO_DMA_MASK |
|
||||
GRBM_STATUS__CP_BUSY_MASK | GRBM_STATUS__CP_COHERENCY_BUSY_MASK)) {
|
||||
grbm_soft_reset = REG_SET_FIELD(grbm_soft_reset,
|
||||
GRBM_SOFT_RESET, SOFT_RESET_CP, 1);
|
||||
grbm_soft_reset = REG_SET_FIELD(grbm_soft_reset,
|
||||
GRBM_SOFT_RESET, SOFT_RESET_GFX, 1);
|
||||
srbm_soft_reset = REG_SET_FIELD(srbm_soft_reset,
|
||||
SRBM_SOFT_RESET, SOFT_RESET_GRBM, 1);
|
||||
}
|
||||
|
||||
/* GRBM_STATUS2 */
|
||||
tmp = RREG32(mmGRBM_STATUS2);
|
||||
if (REG_GET_FIELD(tmp, GRBM_STATUS2, RLC_BUSY))
|
||||
grbm_soft_reset = REG_SET_FIELD(grbm_soft_reset,
|
||||
GRBM_SOFT_RESET, SOFT_RESET_RLC, 1);
|
||||
|
||||
if (REG_GET_FIELD(tmp, GRBM_STATUS2, CPF_BUSY) ||
|
||||
REG_GET_FIELD(tmp, GRBM_STATUS2, CPC_BUSY) ||
|
||||
REG_GET_FIELD(tmp, GRBM_STATUS2, CPG_BUSY)) {
|
||||
grbm_soft_reset = REG_SET_FIELD(grbm_soft_reset, GRBM_SOFT_RESET,
|
||||
SOFT_RESET_CPF, 1);
|
||||
grbm_soft_reset = REG_SET_FIELD(grbm_soft_reset, GRBM_SOFT_RESET,
|
||||
SOFT_RESET_CPC, 1);
|
||||
grbm_soft_reset = REG_SET_FIELD(grbm_soft_reset, GRBM_SOFT_RESET,
|
||||
SOFT_RESET_CPG, 1);
|
||||
srbm_soft_reset = REG_SET_FIELD(srbm_soft_reset, SRBM_SOFT_RESET,
|
||||
SOFT_RESET_GRBM, 1);
|
||||
}
|
||||
|
||||
/* SRBM_STATUS */
|
||||
tmp = RREG32(mmSRBM_STATUS);
|
||||
if (REG_GET_FIELD(tmp, SRBM_STATUS, GRBM_RQ_PENDING))
|
||||
srbm_soft_reset = REG_SET_FIELD(srbm_soft_reset,
|
||||
SRBM_SOFT_RESET, SOFT_RESET_GRBM, 1);
|
||||
if (REG_GET_FIELD(tmp, SRBM_STATUS, SEM_BUSY))
|
||||
srbm_soft_reset = REG_SET_FIELD(srbm_soft_reset,
|
||||
SRBM_SOFT_RESET, SOFT_RESET_SEM, 1);
|
||||
|
||||
if (grbm_soft_reset || srbm_soft_reset) {
|
||||
adev->gfx.grbm_soft_reset = grbm_soft_reset;
|
||||
adev->gfx.srbm_soft_reset = srbm_soft_reset;
|
||||
return true;
|
||||
} else {
|
||||
adev->gfx.grbm_soft_reset = 0;
|
||||
adev->gfx.srbm_soft_reset = 0;
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
static int gfx_v8_0_pre_soft_reset(struct amdgpu_ip_block *ip_block)
|
||||
{
|
||||
struct amdgpu_device *adev = ip_block->adev;
|
||||
@@ -6862,7 +6800,6 @@ static const struct amd_ip_funcs gfx_v8_0_ip_funcs = {
|
||||
.resume = gfx_v8_0_resume,
|
||||
.is_idle = gfx_v8_0_is_idle,
|
||||
.wait_for_idle = gfx_v8_0_wait_for_idle,
|
||||
.check_soft_reset = gfx_v8_0_check_soft_reset,
|
||||
.pre_soft_reset = gfx_v8_0_pre_soft_reset,
|
||||
.soft_reset = gfx_v8_0_soft_reset,
|
||||
.post_soft_reset = gfx_v8_0_post_soft_reset,
|
||||
|
||||
@@ -888,7 +888,6 @@ static const struct amd_ip_funcs jpeg_v5_0_1_ip_funcs = {
|
||||
.resume = jpeg_v5_0_1_resume,
|
||||
.is_idle = jpeg_v5_0_1_is_idle,
|
||||
.wait_for_idle = jpeg_v5_0_1_wait_for_idle,
|
||||
.check_soft_reset = NULL,
|
||||
.pre_soft_reset = NULL,
|
||||
.soft_reset = NULL,
|
||||
.post_soft_reset = NULL,
|
||||
|
||||
@@ -690,7 +690,6 @@ static const struct amd_ip_funcs jpeg_v5_0_2_ip_funcs = {
|
||||
.resume = jpeg_v5_0_2_resume,
|
||||
.is_idle = jpeg_v5_0_2_is_idle,
|
||||
.wait_for_idle = jpeg_v5_0_2_wait_for_idle,
|
||||
.check_soft_reset = NULL,
|
||||
.pre_soft_reset = NULL,
|
||||
.soft_reset = NULL,
|
||||
.post_soft_reset = NULL,
|
||||
|
||||
@@ -1237,27 +1237,6 @@ static int sdma_v3_0_wait_for_idle(struct amdgpu_ip_block *ip_block)
|
||||
return -ETIMEDOUT;
|
||||
}
|
||||
|
||||
static bool sdma_v3_0_check_soft_reset(struct amdgpu_ip_block *ip_block)
|
||||
{
|
||||
struct amdgpu_device *adev = ip_block->adev;
|
||||
u32 srbm_soft_reset = 0;
|
||||
u32 tmp = RREG32(mmSRBM_STATUS2);
|
||||
|
||||
if ((tmp & SRBM_STATUS2__SDMA_BUSY_MASK) ||
|
||||
(tmp & SRBM_STATUS2__SDMA1_BUSY_MASK)) {
|
||||
srbm_soft_reset |= SRBM_SOFT_RESET__SOFT_RESET_SDMA_MASK;
|
||||
srbm_soft_reset |= SRBM_SOFT_RESET__SOFT_RESET_SDMA1_MASK;
|
||||
}
|
||||
|
||||
if (srbm_soft_reset) {
|
||||
adev->sdma.srbm_soft_reset = srbm_soft_reset;
|
||||
return true;
|
||||
} else {
|
||||
adev->sdma.srbm_soft_reset = 0;
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
static int sdma_v3_0_pre_soft_reset(struct amdgpu_ip_block *ip_block)
|
||||
{
|
||||
struct amdgpu_device *adev = ip_block->adev;
|
||||
@@ -1552,7 +1531,6 @@ static const struct amd_ip_funcs sdma_v3_0_ip_funcs = {
|
||||
.resume = sdma_v3_0_resume,
|
||||
.is_idle = sdma_v3_0_is_idle,
|
||||
.wait_for_idle = sdma_v3_0_wait_for_idle,
|
||||
.check_soft_reset = sdma_v3_0_check_soft_reset,
|
||||
.pre_soft_reset = sdma_v3_0_pre_soft_reset,
|
||||
.post_soft_reset = sdma_v3_0_post_soft_reset,
|
||||
.soft_reset = sdma_v3_0_soft_reset,
|
||||
|
||||
@@ -793,23 +793,6 @@ static int sdma_v6_0_soft_reset(struct amdgpu_ip_block *ip_block)
|
||||
return sdma_v6_0_start(adev);
|
||||
}
|
||||
|
||||
static bool sdma_v6_0_check_soft_reset(struct amdgpu_ip_block *ip_block)
|
||||
{
|
||||
struct amdgpu_device *adev = ip_block->adev;
|
||||
struct amdgpu_ring *ring;
|
||||
int i, r;
|
||||
long tmo = msecs_to_jiffies(1000);
|
||||
|
||||
for (i = 0; i < adev->sdma.num_instances; i++) {
|
||||
ring = &adev->sdma.instance[i].ring;
|
||||
r = amdgpu_ring_test_ib(ring, tmo);
|
||||
if (r)
|
||||
return true;
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* sdma_v6_0_start - setup and start the async dma engines
|
||||
*
|
||||
@@ -1747,7 +1730,6 @@ const struct amd_ip_funcs sdma_v6_0_ip_funcs = {
|
||||
.is_idle = sdma_v6_0_is_idle,
|
||||
.wait_for_idle = sdma_v6_0_wait_for_idle,
|
||||
.soft_reset = sdma_v6_0_soft_reset,
|
||||
.check_soft_reset = sdma_v6_0_check_soft_reset,
|
||||
.set_clockgating_state = sdma_v6_0_set_clockgating_state,
|
||||
.set_powergating_state = sdma_v6_0_set_powergating_state,
|
||||
.get_clockgating_state = sdma_v6_0_get_clockgating_state,
|
||||
|
||||
@@ -784,23 +784,6 @@ static int sdma_v7_0_soft_reset(struct amdgpu_ip_block *ip_block)
|
||||
return sdma_v7_0_start(adev);
|
||||
}
|
||||
|
||||
static bool sdma_v7_0_check_soft_reset(struct amdgpu_ip_block *ip_block)
|
||||
{
|
||||
struct amdgpu_device *adev = ip_block->adev;
|
||||
struct amdgpu_ring *ring;
|
||||
int i, r;
|
||||
long tmo = msecs_to_jiffies(1000);
|
||||
|
||||
for (i = 0; i < adev->sdma.num_instances; i++) {
|
||||
ring = &adev->sdma.instance[i].ring;
|
||||
r = amdgpu_ring_test_ib(ring, tmo);
|
||||
if (r)
|
||||
return true;
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
static int sdma_v7_0_reset_queue(struct amdgpu_ring *ring,
|
||||
unsigned int vmid,
|
||||
struct amdgpu_fence *timedout_fence)
|
||||
@@ -1679,7 +1662,6 @@ const struct amd_ip_funcs sdma_v7_0_ip_funcs = {
|
||||
.is_idle = sdma_v7_0_is_idle,
|
||||
.wait_for_idle = sdma_v7_0_wait_for_idle,
|
||||
.soft_reset = sdma_v7_0_soft_reset,
|
||||
.check_soft_reset = sdma_v7_0_check_soft_reset,
|
||||
.set_clockgating_state = sdma_v7_0_set_clockgating_state,
|
||||
.set_powergating_state = sdma_v7_0_set_powergating_state,
|
||||
.get_clockgating_state = sdma_v7_0_get_clockgating_state,
|
||||
|
||||
@@ -775,23 +775,6 @@ static int sdma_v7_1_soft_reset(struct amdgpu_ip_block *ip_block)
|
||||
return sdma_v7_1_inst_start(adev, inst_mask);
|
||||
}
|
||||
|
||||
static bool sdma_v7_1_check_soft_reset(struct amdgpu_ip_block *ip_block)
|
||||
{
|
||||
struct amdgpu_device *adev = ip_block->adev;
|
||||
struct amdgpu_ring *ring;
|
||||
int i, r;
|
||||
long tmo = msecs_to_jiffies(1000);
|
||||
|
||||
for (i = 0; i < adev->sdma.num_instances; i++) {
|
||||
ring = &adev->sdma.instance[i].ring;
|
||||
r = amdgpu_ring_test_ib(ring, tmo);
|
||||
if (r)
|
||||
return true;
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
static int sdma_v7_1_reset_queue(struct amdgpu_ring *ring,
|
||||
unsigned int vmid,
|
||||
struct amdgpu_fence *timedout_fence)
|
||||
@@ -1644,7 +1627,6 @@ const struct amd_ip_funcs sdma_v7_1_ip_funcs = {
|
||||
.is_idle = sdma_v7_1_is_idle,
|
||||
.wait_for_idle = sdma_v7_1_wait_for_idle,
|
||||
.soft_reset = sdma_v7_1_soft_reset,
|
||||
.check_soft_reset = sdma_v7_1_check_soft_reset,
|
||||
.set_clockgating_state = sdma_v7_1_set_clockgating_state,
|
||||
.set_powergating_state = sdma_v7_1_set_powergating_state,
|
||||
.get_clockgating_state = sdma_v7_1_get_clockgating_state,
|
||||
|
||||
@@ -390,25 +390,6 @@ static int tonga_ih_wait_for_idle(struct amdgpu_ip_block *ip_block)
|
||||
return -ETIMEDOUT;
|
||||
}
|
||||
|
||||
static bool tonga_ih_check_soft_reset(struct amdgpu_ip_block *ip_block)
|
||||
{
|
||||
struct amdgpu_device *adev = ip_block->adev;
|
||||
u32 srbm_soft_reset = 0;
|
||||
u32 tmp = RREG32(mmSRBM_STATUS);
|
||||
|
||||
if (tmp & SRBM_STATUS__IH_BUSY_MASK)
|
||||
srbm_soft_reset = REG_SET_FIELD(srbm_soft_reset, SRBM_SOFT_RESET,
|
||||
SOFT_RESET_IH, 1);
|
||||
|
||||
if (srbm_soft_reset) {
|
||||
adev->irq.srbm_soft_reset = srbm_soft_reset;
|
||||
return true;
|
||||
} else {
|
||||
adev->irq.srbm_soft_reset = 0;
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
static int tonga_ih_pre_soft_reset(struct amdgpu_ip_block *ip_block)
|
||||
{
|
||||
if (!ip_block->adev->irq.srbm_soft_reset)
|
||||
@@ -481,7 +462,6 @@ static const struct amd_ip_funcs tonga_ih_ip_funcs = {
|
||||
.resume = tonga_ih_resume,
|
||||
.is_idle = tonga_ih_is_idle,
|
||||
.wait_for_idle = tonga_ih_wait_for_idle,
|
||||
.check_soft_reset = tonga_ih_check_soft_reset,
|
||||
.pre_soft_reset = tonga_ih_pre_soft_reset,
|
||||
.soft_reset = tonga_ih_soft_reset,
|
||||
.post_soft_reset = tonga_ih_post_soft_reset,
|
||||
|
||||
@@ -1165,25 +1165,6 @@ static int uvd_v6_0_wait_for_idle(struct amdgpu_ip_block *ip_block)
|
||||
}
|
||||
|
||||
#define AMDGPU_UVD_STATUS_BUSY_MASK 0xfd
|
||||
static bool uvd_v6_0_check_soft_reset(struct amdgpu_ip_block *ip_block)
|
||||
{
|
||||
struct amdgpu_device *adev = ip_block->adev;
|
||||
u32 srbm_soft_reset = 0;
|
||||
u32 tmp = RREG32(mmSRBM_STATUS);
|
||||
|
||||
if (REG_GET_FIELD(tmp, SRBM_STATUS, UVD_RQ_PENDING) ||
|
||||
REG_GET_FIELD(tmp, SRBM_STATUS, UVD_BUSY) ||
|
||||
(RREG32(mmUVD_STATUS) & AMDGPU_UVD_STATUS_BUSY_MASK))
|
||||
srbm_soft_reset = REG_SET_FIELD(srbm_soft_reset, SRBM_SOFT_RESET, SOFT_RESET_UVD, 1);
|
||||
|
||||
if (srbm_soft_reset) {
|
||||
adev->uvd.inst->srbm_soft_reset = srbm_soft_reset;
|
||||
return true;
|
||||
} else {
|
||||
adev->uvd.inst->srbm_soft_reset = 0;
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
static int uvd_v6_0_pre_soft_reset(struct amdgpu_ip_block *ip_block)
|
||||
{
|
||||
@@ -1538,7 +1519,6 @@ static const struct amd_ip_funcs uvd_v6_0_ip_funcs = {
|
||||
.resume = uvd_v6_0_resume,
|
||||
.is_idle = uvd_v6_0_is_idle,
|
||||
.wait_for_idle = uvd_v6_0_wait_for_idle,
|
||||
.check_soft_reset = uvd_v6_0_check_soft_reset,
|
||||
.pre_soft_reset = uvd_v6_0_pre_soft_reset,
|
||||
.soft_reset = uvd_v6_0_soft_reset,
|
||||
.post_soft_reset = uvd_v6_0_post_soft_reset,
|
||||
|
||||
@@ -631,47 +631,6 @@ static int vce_v3_0_wait_for_idle(struct amdgpu_ip_block *ip_block)
|
||||
#define AMDGPU_VCE_STATUS_BUSY_MASK (VCE_STATUS_VCPU_REPORT_AUTO_BUSY_MASK | \
|
||||
VCE_STATUS_VCPU_REPORT_RB0_BUSY_MASK)
|
||||
|
||||
static bool vce_v3_0_check_soft_reset(struct amdgpu_ip_block *ip_block)
|
||||
{
|
||||
struct amdgpu_device *adev = ip_block->adev;
|
||||
u32 srbm_soft_reset = 0;
|
||||
|
||||
/* According to VCE team , we should use VCE_STATUS instead
|
||||
* SRBM_STATUS.VCE_BUSY bit for busy status checking.
|
||||
* GRBM_GFX_INDEX.INSTANCE_INDEX is used to specify which VCE
|
||||
* instance's registers are accessed
|
||||
* (0 for 1st instance, 10 for 2nd instance).
|
||||
*
|
||||
*VCE_STATUS
|
||||
*|UENC|ACPI|AUTO ACTIVE|RB1 |RB0 |RB2 | |FW_LOADED|JOB |
|
||||
*|----+----+-----------+----+----+----+----------+---------+----|
|
||||
*|bit8|bit7| bit6 |bit5|bit4|bit3| bit2 | bit1 |bit0|
|
||||
*
|
||||
* VCE team suggest use bit 3--bit 6 for busy status check
|
||||
*/
|
||||
mutex_lock(&adev->grbm_idx_mutex);
|
||||
WREG32(mmGRBM_GFX_INDEX, GET_VCE_INSTANCE(0));
|
||||
if (RREG32(mmVCE_STATUS) & AMDGPU_VCE_STATUS_BUSY_MASK) {
|
||||
srbm_soft_reset = REG_SET_FIELD(srbm_soft_reset, SRBM_SOFT_RESET, SOFT_RESET_VCE0, 1);
|
||||
srbm_soft_reset = REG_SET_FIELD(srbm_soft_reset, SRBM_SOFT_RESET, SOFT_RESET_VCE1, 1);
|
||||
}
|
||||
WREG32(mmGRBM_GFX_INDEX, GET_VCE_INSTANCE(1));
|
||||
if (RREG32(mmVCE_STATUS) & AMDGPU_VCE_STATUS_BUSY_MASK) {
|
||||
srbm_soft_reset = REG_SET_FIELD(srbm_soft_reset, SRBM_SOFT_RESET, SOFT_RESET_VCE0, 1);
|
||||
srbm_soft_reset = REG_SET_FIELD(srbm_soft_reset, SRBM_SOFT_RESET, SOFT_RESET_VCE1, 1);
|
||||
}
|
||||
WREG32(mmGRBM_GFX_INDEX, GET_VCE_INSTANCE(0));
|
||||
mutex_unlock(&adev->grbm_idx_mutex);
|
||||
|
||||
if (srbm_soft_reset) {
|
||||
adev->vce.srbm_soft_reset = srbm_soft_reset;
|
||||
return true;
|
||||
} else {
|
||||
adev->vce.srbm_soft_reset = 0;
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
static int vce_v3_0_soft_reset(struct amdgpu_ip_block *ip_block)
|
||||
{
|
||||
struct amdgpu_device *adev = ip_block->adev;
|
||||
@@ -909,7 +868,6 @@ static const struct amd_ip_funcs vce_v3_0_ip_funcs = {
|
||||
.resume = vce_v3_0_resume,
|
||||
.is_idle = vce_v3_0_is_idle,
|
||||
.wait_for_idle = vce_v3_0_wait_for_idle,
|
||||
.check_soft_reset = vce_v3_0_check_soft_reset,
|
||||
.pre_soft_reset = vce_v3_0_pre_soft_reset,
|
||||
.soft_reset = vce_v3_0_soft_reset,
|
||||
.post_soft_reset = vce_v3_0_post_soft_reset,
|
||||
|
||||
@@ -1674,7 +1674,6 @@ static const struct amd_ip_funcs vcn_v5_0_1_ip_funcs = {
|
||||
.resume = vcn_v5_0_1_resume,
|
||||
.is_idle = vcn_v5_0_1_is_idle,
|
||||
.wait_for_idle = vcn_v5_0_1_wait_for_idle,
|
||||
.check_soft_reset = NULL,
|
||||
.pre_soft_reset = NULL,
|
||||
.soft_reset = NULL,
|
||||
.post_soft_reset = NULL,
|
||||
|
||||
@@ -1203,7 +1203,6 @@ static const struct amd_ip_funcs vcn_v5_0_2_ip_funcs = {
|
||||
.resume = vcn_v5_0_2_resume,
|
||||
.is_idle = vcn_v5_0_2_is_idle,
|
||||
.wait_for_idle = vcn_v5_0_2_wait_for_idle,
|
||||
.check_soft_reset = NULL,
|
||||
.pre_soft_reset = NULL,
|
||||
.soft_reset = NULL,
|
||||
.post_soft_reset = NULL,
|
||||
|
||||
@@ -237,11 +237,6 @@ static int dm_wait_for_idle(struct amdgpu_ip_block *ip_block)
|
||||
return 0;
|
||||
}
|
||||
|
||||
static bool dm_check_soft_reset(struct amdgpu_ip_block *ip_block)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
static int dm_soft_reset(struct amdgpu_ip_block *ip_block)
|
||||
{
|
||||
/* XXX todo */
|
||||
@@ -2201,7 +2196,6 @@ static const struct amd_ip_funcs amdgpu_dm_funcs = {
|
||||
.resume = dm_resume,
|
||||
.is_idle = dm_is_idle,
|
||||
.wait_for_idle = dm_wait_for_idle,
|
||||
.check_soft_reset = dm_check_soft_reset,
|
||||
.soft_reset = dm_soft_reset,
|
||||
.set_clockgating_state = dm_set_clockgating_state,
|
||||
.set_powergating_state = dm_set_powergating_state,
|
||||
|
||||
@@ -471,7 +471,6 @@ struct amd_ip_funcs {
|
||||
void (*complete)(struct amdgpu_ip_block *ip_block);
|
||||
bool (*is_idle)(struct amdgpu_ip_block *ip_block);
|
||||
int (*wait_for_idle)(struct amdgpu_ip_block *ip_block);
|
||||
bool (*check_soft_reset)(struct amdgpu_ip_block *ip_block);
|
||||
int (*pre_soft_reset)(struct amdgpu_ip_block *ip_block);
|
||||
int (*soft_reset)(struct amdgpu_ip_block *ip_block);
|
||||
int (*post_soft_reset)(struct amdgpu_ip_block *ip_block);
|
||||
|
||||
@@ -2772,7 +2772,6 @@ const struct amd_ip_funcs smu_ip_funcs = {
|
||||
.suspend = smu_suspend,
|
||||
.resume = smu_resume,
|
||||
.is_idle = NULL,
|
||||
.check_soft_reset = NULL,
|
||||
.wait_for_idle = NULL,
|
||||
.soft_reset = NULL,
|
||||
.set_clockgating_state = smu_set_clockgating_state,
|
||||
|
||||
Reference in New Issue
Block a user