diff options
Diffstat (limited to 'common/recipes-kernel/linux/linux-amd/0040-drm-radeon-add-vce-debugfs-support.patch')
-rw-r--r-- | common/recipes-kernel/linux/linux-amd/0040-drm-radeon-add-vce-debugfs-support.patch | 98 |
1 files changed, 98 insertions, 0 deletions
diff --git a/common/recipes-kernel/linux/linux-amd/0040-drm-radeon-add-vce-debugfs-support.patch b/common/recipes-kernel/linux/linux-amd/0040-drm-radeon-add-vce-debugfs-support.patch new file mode 100644 index 00000000..7c1f0f58 --- /dev/null +++ b/common/recipes-kernel/linux/linux-amd/0040-drm-radeon-add-vce-debugfs-support.patch @@ -0,0 +1,98 @@ +From 903b57d77d6bca3f437a15bd4fe821453018e958 Mon Sep 17 00:00:00 2001 +From: Leo Liu <leo.liu@amd.com> +Date: Mon, 25 Nov 2013 17:30:38 -0500 +Subject: [PATCH 40/60] drm/radeon: add vce debugfs support + +Signed-off-by: Leo Liu <leo.liu@amd.com> +--- + drivers/gpu/drm/radeon/radeon.h | 1 + + drivers/gpu/drm/radeon/radeon_vce.c | 37 +++++++++++++++++++++++++++++++++++++ + 2 files changed, 38 insertions(+) + +diff --git a/drivers/gpu/drm/radeon/radeon.h b/drivers/gpu/drm/radeon/radeon.h +index a4d6f82..d3f1389 100644 +--- a/drivers/gpu/drm/radeon/radeon.h ++++ b/drivers/gpu/drm/radeon/radeon.h +@@ -1641,6 +1641,7 @@ struct radeon_vce { + atomic_t handles[RADEON_MAX_VCE_HANDLES]; + struct drm_file *filp[RADEON_MAX_VCE_HANDLES]; + struct delayed_work idle_work; ++ bool status; + }; + + int radeon_vce_init(struct radeon_device *rdev); +diff --git a/drivers/gpu/drm/radeon/radeon_vce.c b/drivers/gpu/drm/radeon/radeon_vce.c +index d130432..eb11ac0 100644 +--- a/drivers/gpu/drm/radeon/radeon_vce.c ++++ b/drivers/gpu/drm/radeon/radeon_vce.c +@@ -41,6 +41,7 @@ + #define FIRMWARE_BONAIRE "radeon/BONAIRE_vce.bin" + + MODULE_FIRMWARE(FIRMWARE_BONAIRE); ++static int radeon_debugfs_vce_init(struct radeon_device *rdev); + + static void radeon_vce_idle_work_handler(struct work_struct *work); + +@@ -146,6 +147,10 @@ int radeon_vce_init(struct radeon_device *rdev) + rdev->vce.filp[i] = NULL; + } + ++ r = radeon_debugfs_vce_init(rdev); ++ if (r) ++ dev_err(rdev->dev, "(%d) Register debugfs file for vce failed\n", r); ++ + return 0; + } + +@@ -249,6 +254,7 @@ static void radeon_vce_idle_work_handler(struct work_struct *work) + schedule_delayed_work(&rdev->vce.idle_work, + msecs_to_jiffies(VCE_IDLE_TIMEOUT_MS)); + } ++ rdev->vce.status = false; + } + + /** +@@ -276,9 +282,40 @@ void radeon_vce_note_usage(struct radeon_device *rdev) + } else { + radeon_set_vce_clocks(rdev, 53300, 40000); + } ++ rdev->vce.status = true; + } + } + ++/* ++ * Debugfs info ++ */ ++#if defined(CONFIG_DEBUG_FS) ++ ++static int radeon_debugfs_vce_info(struct seq_file *m, void *data) ++{ ++ struct drm_info_node *node = (struct drm_info_node *) m->private; ++ struct drm_device *dev = node->minor->dev; ++ struct radeon_device *rdev = dev->dev_private; ++ ++ seq_printf(m, "VCE Status: %s\n", ((rdev->vce.status) ? "Busy" : "Idle")); ++ ++ return 0; ++} ++ ++static struct drm_info_list radeon_vce_info_list[] = { ++ {"radeon_vce_info", radeon_debugfs_vce_info, 0, NULL}, ++}; ++#endif ++ ++static int radeon_debugfs_vce_init(struct radeon_device *rdev) ++{ ++#if defined(CONFIG_DEBUG_FS) ++ return radeon_debugfs_add_files(rdev, radeon_vce_info_list, ARRAY_SIZE(radeon_vce_info_list)); ++#else ++ return 0; ++#endif ++} ++ + /** + * radeon_vce_free_handles - free still open VCE handles + * +-- +1.9.1 + |