summaryrefslogtreecommitdiff
path: root/drivers/gpu/drm/amd/amdgpu/amdgpu_reg_access.h
diff options
context:
space:
mode:
authorLijo Lazar <lijo.lazar@amd.com>2025-12-08 18:26:09 +0530
committerAlex Deucher <alexander.deucher@amd.com>2026-03-02 16:42:38 -0500
commitf4eb08f8b216c334752246fe24e1304477d78968 (patch)
tree5820c2ff24a9f14af214d174f60e506a4b52c1c5 /drivers/gpu/drm/amd/amdgpu/amdgpu_reg_access.h
parent3d77ca68eb0b48f88cc891d1b98f109b68e2ffcf (diff)
drm/amdgpu: Add smc method to register block
Define register access block which consolidates different register access methods. Add smc method to register access block. Signed-off-by: Lijo Lazar <lijo.lazar@amd.com> Reviewed-by: Hawking Zhang <Hawking.Zhang@amd.com> Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
Diffstat (limited to 'drivers/gpu/drm/amd/amdgpu/amdgpu_reg_access.h')
-rw-r--r--drivers/gpu/drm/amd/amdgpu/amdgpu_reg_access.h18
1 files changed, 15 insertions, 3 deletions
diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_reg_access.h b/drivers/gpu/drm/amd/amdgpu/amdgpu_reg_access.h
index e03865c0c093..225d89eabed5 100644
--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_reg_access.h
+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_reg_access.h
@@ -25,15 +25,27 @@
#define __AMDGPU_REG_ACCESS_H__
#include <linux/types.h>
+#include <linux/spinlock.h>
struct amdgpu_device;
-/*
- * Registers read & write functions.
- */
typedef uint32_t (*amdgpu_rreg_t)(struct amdgpu_device *, uint32_t);
typedef void (*amdgpu_wreg_t)(struct amdgpu_device *, uint32_t, uint32_t);
+struct amdgpu_reg_ind {
+ spinlock_t lock;
+ amdgpu_rreg_t rreg;
+ amdgpu_wreg_t wreg;
+};
+
+struct amdgpu_reg_access {
+ struct amdgpu_reg_ind smc;
+};
+
+void amdgpu_reg_access_init(struct amdgpu_device *adev);
+uint32_t amdgpu_reg_smc_rd32(struct amdgpu_device *adev, uint32_t reg);
+void amdgpu_reg_smc_wr32(struct amdgpu_device *adev, uint32_t reg, uint32_t v);
+
typedef uint32_t (*amdgpu_rreg_ext_t)(struct amdgpu_device *, uint64_t);
typedef void (*amdgpu_wreg_ext_t)(struct amdgpu_device *, uint64_t, uint32_t);