aboutsummaryrefslogtreecommitdiffstats
path: root/common/recipes-kernel/linux/files/1023-drm-amd-amdgpu-Add-debugfs-entries-for-smc-didt-pcie.patch
diff options
context:
space:
mode:
Diffstat (limited to 'common/recipes-kernel/linux/files/1023-drm-amd-amdgpu-Add-debugfs-entries-for-smc-didt-pcie.patch')
-rw-r--r--common/recipes-kernel/linux/files/1023-drm-amd-amdgpu-Add-debugfs-entries-for-smc-didt-pcie.patch291
1 files changed, 0 insertions, 291 deletions
diff --git a/common/recipes-kernel/linux/files/1023-drm-amd-amdgpu-Add-debugfs-entries-for-smc-didt-pcie.patch b/common/recipes-kernel/linux/files/1023-drm-amd-amdgpu-Add-debugfs-entries-for-smc-didt-pcie.patch
deleted file mode 100644
index 41acf703..00000000
--- a/common/recipes-kernel/linux/files/1023-drm-amd-amdgpu-Add-debugfs-entries-for-smc-didt-pcie.patch
+++ /dev/null
@@ -1,291 +0,0 @@
-From c08b2057b33808ae9fc3942cb892f78b071379ba Mon Sep 17 00:00:00 2001
-From: Tom St Denis <tom.stdenis@amd.com>
-Date: Fri, 15 Apr 2016 13:08:44 -0400
-Subject: [PATCH 1023/1110] drm/amd/amdgpu: Add debugfs entries for
- smc/didt/pcie
-
-This adds 3 new files that can be read/written to access
-GPU registers.
-
-Signed-off-by: Tom St Denis <tom.stdenis@amd.com>
-Reviewed-by: Alex Deucher <alexander.deucher@amd.com>
----
- drivers/gpu/drm/amd/amdgpu/amdgpu.h | 2 +-
- drivers/gpu/drm/amd/amdgpu/amdgpu_device.c | 230 ++++++++++++++++++++++++++++-
- 2 files changed, 223 insertions(+), 9 deletions(-)
-
-diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu.h b/drivers/gpu/drm/amd/amdgpu/amdgpu.h
-index a8c59be..6079a39 100644
---- a/drivers/gpu/drm/amd/amdgpu/amdgpu.h
-+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu.h
-@@ -1959,7 +1959,7 @@ struct amdgpu_device {
- struct amdgpu_debugfs debugfs[AMDGPU_DEBUGFS_MAX_COMPONENTS];
- unsigned debugfs_count;
- #if defined(CONFIG_DEBUG_FS)
-- struct dentry *debugfs_regs;
-+ struct dentry *debugfs_regs[AMDGPU_DEBUGFS_MAX_COMPONENTS];
- #endif
- struct amdgpu_atif atif;
- struct amdgpu_atcs atcs;
-diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c
-index 8a5e3f7..56e4627 100644
---- a/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c
-+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c
-@@ -2186,32 +2186,246 @@ static ssize_t amdgpu_debugfs_regs_write(struct file *f, const char __user *buf,
- return result;
- }
-
-+static ssize_t amdgpu_debugfs_regs_pcie_read(struct file *f, char __user *buf,
-+ size_t size, loff_t *pos)
-+{
-+ struct amdgpu_device *adev = f->f_inode->i_private;
-+ ssize_t result = 0;
-+ int r;
-+
-+ if (size & 0x3 || *pos & 0x3)
-+ return -EINVAL;
-+
-+ while (size) {
-+ uint32_t value;
-+
-+ value = RREG32_PCIE(*pos >> 2);
-+ r = put_user(value, (uint32_t *)buf);
-+ if (r)
-+ return r;
-+
-+ result += 4;
-+ buf += 4;
-+ *pos += 4;
-+ size -= 4;
-+ }
-+
-+ return result;
-+}
-+
-+static ssize_t amdgpu_debugfs_regs_pcie_write(struct file *f, const char __user *buf,
-+ size_t size, loff_t *pos)
-+{
-+ struct amdgpu_device *adev = f->f_inode->i_private;
-+ ssize_t result = 0;
-+ int r;
-+
-+ if (size & 0x3 || *pos & 0x3)
-+ return -EINVAL;
-+
-+ while (size) {
-+ uint32_t value;
-+
-+ r = get_user(value, (uint32_t *)buf);
-+ if (r)
-+ return r;
-+
-+ WREG32_PCIE(*pos >> 2, value);
-+
-+ result += 4;
-+ buf += 4;
-+ *pos += 4;
-+ size -= 4;
-+ }
-+
-+ return result;
-+}
-+
-+static ssize_t amdgpu_debugfs_regs_didt_read(struct file *f, char __user *buf,
-+ size_t size, loff_t *pos)
-+{
-+ struct amdgpu_device *adev = f->f_inode->i_private;
-+ ssize_t result = 0;
-+ int r;
-+
-+ if (size & 0x3 || *pos & 0x3)
-+ return -EINVAL;
-+
-+ while (size) {
-+ uint32_t value;
-+
-+ value = RREG32_DIDT(*pos >> 2);
-+ r = put_user(value, (uint32_t *)buf);
-+ if (r)
-+ return r;
-+
-+ result += 4;
-+ buf += 4;
-+ *pos += 4;
-+ size -= 4;
-+ }
-+
-+ return result;
-+}
-+
-+static ssize_t amdgpu_debugfs_regs_didt_write(struct file *f, const char __user *buf,
-+ size_t size, loff_t *pos)
-+{
-+ struct amdgpu_device *adev = f->f_inode->i_private;
-+ ssize_t result = 0;
-+ int r;
-+
-+ if (size & 0x3 || *pos & 0x3)
-+ return -EINVAL;
-+
-+ while (size) {
-+ uint32_t value;
-+
-+ r = get_user(value, (uint32_t *)buf);
-+ if (r)
-+ return r;
-+
-+ WREG32_DIDT(*pos >> 2, value);
-+
-+ result += 4;
-+ buf += 4;
-+ *pos += 4;
-+ size -= 4;
-+ }
-+
-+ return result;
-+}
-+
-+static ssize_t amdgpu_debugfs_regs_smc_read(struct file *f, char __user *buf,
-+ size_t size, loff_t *pos)
-+{
-+ struct amdgpu_device *adev = f->f_inode->i_private;
-+ ssize_t result = 0;
-+ int r;
-+
-+ if (size & 0x3 || *pos & 0x3)
-+ return -EINVAL;
-+
-+ while (size) {
-+ uint32_t value;
-+
-+ value = RREG32_SMC(*pos >> 2);
-+ r = put_user(value, (uint32_t *)buf);
-+ if (r)
-+ return r;
-+
-+ result += 4;
-+ buf += 4;
-+ *pos += 4;
-+ size -= 4;
-+ }
-+
-+ return result;
-+}
-+
-+static ssize_t amdgpu_debugfs_regs_smc_write(struct file *f, const char __user *buf,
-+ size_t size, loff_t *pos)
-+{
-+ struct amdgpu_device *adev = f->f_inode->i_private;
-+ ssize_t result = 0;
-+ int r;
-+
-+ if (size & 0x3 || *pos & 0x3)
-+ return -EINVAL;
-+
-+ while (size) {
-+ uint32_t value;
-+
-+ r = get_user(value, (uint32_t *)buf);
-+ if (r)
-+ return r;
-+
-+ WREG32_SMC(*pos >> 2, value);
-+
-+ result += 4;
-+ buf += 4;
-+ *pos += 4;
-+ size -= 4;
-+ }
-+
-+ return result;
-+}
-+
- static const struct file_operations amdgpu_debugfs_regs_fops = {
- .owner = THIS_MODULE,
- .read = amdgpu_debugfs_regs_read,
- .write = amdgpu_debugfs_regs_write,
- .llseek = default_llseek
- };
-+static const struct file_operations amdgpu_debugfs_regs_didt_fops = {
-+ .owner = THIS_MODULE,
-+ .read = amdgpu_debugfs_regs_didt_read,
-+ .write = amdgpu_debugfs_regs_didt_write,
-+ .llseek = default_llseek
-+};
-+static const struct file_operations amdgpu_debugfs_regs_pcie_fops = {
-+ .owner = THIS_MODULE,
-+ .read = amdgpu_debugfs_regs_pcie_read,
-+ .write = amdgpu_debugfs_regs_pcie_write,
-+ .llseek = default_llseek
-+};
-+static const struct file_operations amdgpu_debugfs_regs_smc_fops = {
-+ .owner = THIS_MODULE,
-+ .read = amdgpu_debugfs_regs_smc_read,
-+ .write = amdgpu_debugfs_regs_smc_write,
-+ .llseek = default_llseek
-+};
-+
-+static const struct file_operations *debugfs_regs[] = {
-+ &amdgpu_debugfs_regs_fops,
-+ &amdgpu_debugfs_regs_didt_fops,
-+ &amdgpu_debugfs_regs_pcie_fops,
-+ &amdgpu_debugfs_regs_smc_fops,
-+};
-+
-+static const char *debugfs_regs_names[] = {
-+ "amdgpu_regs",
-+ "amdgpu_regs_didt",
-+ "amdgpu_regs_pcie",
-+ "amdgpu_regs_smc",
-+};
-
- static int amdgpu_debugfs_regs_init(struct amdgpu_device *adev)
- {
- struct drm_minor *minor = adev->ddev->primary;
- struct dentry *ent, *root = minor->debugfs_root;
-+ unsigned i, j;
-+
-+ for (i = 0; i < ARRAY_SIZE(debugfs_regs); i++) {
-+ ent = debugfs_create_file(debugfs_regs_names[i],
-+ S_IFREG | S_IRUGO, root,
-+ adev, debugfs_regs[i]);
-+ if (IS_ERR(ent)) {
-+ for (j = 0; j < i; j++) {
-+ debugfs_remove(adev->debugfs_regs[i]);
-+ adev->debugfs_regs[i] = NULL;
-+ }
-+ return PTR_ERR(ent);
-+ }
-
-- ent = debugfs_create_file("amdgpu_regs", S_IFREG | S_IRUGO, root,
-- adev, &amdgpu_debugfs_regs_fops);
-- if (IS_ERR(ent))
-- return PTR_ERR(ent);
-- i_size_write(ent->d_inode, adev->rmmio_size);
-- adev->debugfs_regs = ent;
-+ if (!i)
-+ i_size_write(ent->d_inode, adev->rmmio_size);
-+ adev->debugfs_regs[i] = ent;
-+ }
-
- return 0;
- }
-
- static void amdgpu_debugfs_regs_cleanup(struct amdgpu_device *adev)
- {
-- debugfs_remove(adev->debugfs_regs);
-- adev->debugfs_regs = NULL;
-+ unsigned i;
-+
-+ for (i = 0; i < ARRAY_SIZE(debugfs_regs); i++) {
-+ if (adev->debugfs_regs[i]) {
-+ debugfs_remove(adev->debugfs_regs[i]);
-+ adev->debugfs_regs[i] = NULL;
-+ }
-+ }
- }
-
- int amdgpu_debugfs_init(struct drm_minor *minor)
---
-2.7.4
-