amdgpu/soc15: make the pcie index/data registers constant.
These don't seem to change at runtime, and the initialisers are constant data. This could be improved by not selecting the apu/non-apu path on each pcie read/write access. Signed-off-by: Dave Airlie <airlied@redhat.com> Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
This commit is contained in:
parent
6cdb91e281
commit
35b31f7c64
@ -216,7 +216,10 @@ void nbio_v6_1_get_clockgating_state(struct amdgpu_device *adev, u32 *flags)
|
||||
}
|
||||
|
||||
struct nbio_hdp_flush_reg nbio_v6_1_hdp_flush_reg;
|
||||
struct nbio_pcie_index_data nbio_v6_1_pcie_index_data;
|
||||
const struct nbio_pcie_index_data nbio_v6_1_pcie_index_data = {
|
||||
.index_offset = SOC15_REG_OFFSET(NBIO, 0, mmPCIE_INDEX),
|
||||
.data_offset = SOC15_REG_OFFSET(NBIO, 0, mmPCIE_DATA),
|
||||
};
|
||||
|
||||
int nbio_v6_1_init(struct amdgpu_device *adev)
|
||||
{
|
||||
@ -235,9 +238,6 @@ int nbio_v6_1_init(struct amdgpu_device *adev)
|
||||
nbio_v6_1_hdp_flush_reg.ref_and_mask_sdma0 = BIF_BX_PF0_GPU_HDP_FLUSH_DONE__SDMA0_MASK;
|
||||
nbio_v6_1_hdp_flush_reg.ref_and_mask_sdma1 = BIF_BX_PF0_GPU_HDP_FLUSH_DONE__SDMA1_MASK;
|
||||
|
||||
nbio_v6_1_pcie_index_data.index_offset = SOC15_REG_OFFSET(NBIO, 0, mmPCIE_INDEX);
|
||||
nbio_v6_1_pcie_index_data.data_offset = SOC15_REG_OFFSET(NBIO, 0, mmPCIE_DATA);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
@ -27,7 +27,7 @@
|
||||
#include "soc15_common.h"
|
||||
|
||||
extern struct nbio_hdp_flush_reg nbio_v6_1_hdp_flush_reg;
|
||||
extern struct nbio_pcie_index_data nbio_v6_1_pcie_index_data;
|
||||
extern const struct nbio_pcie_index_data nbio_v6_1_pcie_index_data;
|
||||
int nbio_v6_1_init(struct amdgpu_device *adev);
|
||||
u32 nbio_v6_1_get_atombios_scratch_regs(struct amdgpu_device *adev,
|
||||
uint32_t idx);
|
||||
|
@ -186,7 +186,10 @@ void nbio_v7_0_ih_control(struct amdgpu_device *adev)
|
||||
}
|
||||
|
||||
struct nbio_hdp_flush_reg nbio_v7_0_hdp_flush_reg;
|
||||
struct nbio_pcie_index_data nbio_v7_0_pcie_index_data;
|
||||
const struct nbio_pcie_index_data nbio_v7_0_pcie_index_data = {
|
||||
.index_offset = SOC15_REG_OFFSET(NBIO, 0, mmPCIE_INDEX2),
|
||||
.data_offset = SOC15_REG_OFFSET(NBIO, 0, mmPCIE_DATA2)
|
||||
};
|
||||
|
||||
int nbio_v7_0_init(struct amdgpu_device *adev)
|
||||
{
|
||||
@ -205,8 +208,5 @@ int nbio_v7_0_init(struct amdgpu_device *adev)
|
||||
nbio_v7_0_hdp_flush_reg.ref_and_mask_sdma0 = GPU_HDP_FLUSH_DONE__SDMA0_MASK;
|
||||
nbio_v7_0_hdp_flush_reg.ref_and_mask_sdma1 = GPU_HDP_FLUSH_DONE__SDMA1_MASK;
|
||||
|
||||
nbio_v7_0_pcie_index_data.index_offset = SOC15_REG_OFFSET(NBIO, 0, mmPCIE_INDEX2);
|
||||
nbio_v7_0_pcie_index_data.data_offset = SOC15_REG_OFFSET(NBIO, 0, mmPCIE_DATA2);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
@ -27,7 +27,7 @@
|
||||
#include "soc15_common.h"
|
||||
|
||||
extern struct nbio_hdp_flush_reg nbio_v7_0_hdp_flush_reg;
|
||||
extern struct nbio_pcie_index_data nbio_v7_0_pcie_index_data;
|
||||
extern const struct nbio_pcie_index_data nbio_v7_0_pcie_index_data;
|
||||
int nbio_v7_0_init(struct amdgpu_device *adev);
|
||||
u32 nbio_v7_0_get_atombios_scratch_regs(struct amdgpu_device *adev,
|
||||
uint32_t idx);
|
||||
|
@ -101,7 +101,7 @@ static u32 soc15_pcie_rreg(struct amdgpu_device *adev, u32 reg)
|
||||
{
|
||||
unsigned long flags, address, data;
|
||||
u32 r;
|
||||
struct nbio_pcie_index_data *nbio_pcie_id;
|
||||
const struct nbio_pcie_index_data *nbio_pcie_id;
|
||||
|
||||
if (adev->flags & AMD_IS_APU)
|
||||
nbio_pcie_id = &nbio_v7_0_pcie_index_data;
|
||||
@ -122,7 +122,7 @@ static u32 soc15_pcie_rreg(struct amdgpu_device *adev, u32 reg)
|
||||
static void soc15_pcie_wreg(struct amdgpu_device *adev, u32 reg, u32 v)
|
||||
{
|
||||
unsigned long flags, address, data;
|
||||
struct nbio_pcie_index_data *nbio_pcie_id;
|
||||
const struct nbio_pcie_index_data *nbio_pcie_id;
|
||||
|
||||
if (adev->flags & AMD_IS_APU)
|
||||
nbio_pcie_id = &nbio_v7_0_pcie_index_data;
|
||||
|
Loading…
Reference in New Issue
Block a user