aboutsummaryrefslogtreecommitdiffstats
path: root/common/recipes-kernel/linux/files/0038-drm-amdgpu-implement-cgs-interface-to-query-system-i.patch
diff options
context:
space:
mode:
Diffstat (limited to 'common/recipes-kernel/linux/files/0038-drm-amdgpu-implement-cgs-interface-to-query-system-i.patch')
-rw-r--r--common/recipes-kernel/linux/files/0038-drm-amdgpu-implement-cgs-interface-to-query-system-i.patch114
1 files changed, 114 insertions, 0 deletions
diff --git a/common/recipes-kernel/linux/files/0038-drm-amdgpu-implement-cgs-interface-to-query-system-i.patch b/common/recipes-kernel/linux/files/0038-drm-amdgpu-implement-cgs-interface-to-query-system-i.patch
new file mode 100644
index 00000000..555a7398
--- /dev/null
+++ b/common/recipes-kernel/linux/files/0038-drm-amdgpu-implement-cgs-interface-to-query-system-i.patch
@@ -0,0 +1,114 @@
+From 2ba0b9d24785f41d0ab71d3d58c8cc14df71e24c Mon Sep 17 00:00:00 2001
+From: Rex Zhu <Rex.Zhu@amd.com>
+Date: Wed, 23 Sep 2015 20:11:54 +0800
+Subject: [PATCH 0038/1110] drm/amdgpu: implement cgs interface to query system
+ info
+
+Add a query to get the bus number and function of the
+device.
+
+Signed-off-by: Rex Zhu <Rex.Zhu@amd.com>
+Reviewed-by: Jammy Zhou <Jammy.Zhou@amd.com>
+---
+ drivers/gpu/drm/amd/amdgpu/amdgpu_cgs.c | 23 +++++++++++++++++++++++
+ drivers/gpu/drm/amd/include/cgs_common.h | 23 +++++++++++++++++++++++
+ 2 files changed, 46 insertions(+)
+
+diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_cgs.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_cgs.c
+index f901cdc..19f46d0 100644
+--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_cgs.c
++++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_cgs.c
+@@ -736,6 +736,28 @@ static int amdgpu_cgs_get_firmware_info(void *cgs_device,
+ return 0;
+ }
+
++static int amdgpu_cgs_query_system_info(void *cgs_device,
++ struct cgs_system_info *sys_info)
++{
++ CGS_FUNC_ADEV;
++
++ if (NULL == sys_info)
++ return -ENODEV;
++
++ if (sizeof(struct cgs_system_info) != sys_info->size)
++ return -ENODEV;
++
++ switch (sys_info->info_id) {
++ case CGS_SYSTEM_INFO_ADAPTER_BDF_ID:
++ sys_info->value = adev->pdev->devfn | (adev->pdev->bus->number << 8);
++ break;
++ default:
++ return -ENODEV;
++ }
++
++ return 0;
++}
++
+ /** \brief evaluate acpi namespace object, handle or pathname must be valid
+ * \param cgs_device
+ * \param info input/output arguments for the control method
+@@ -985,6 +1007,7 @@ static const struct cgs_ops amdgpu_cgs_ops = {
+ amdgpu_cgs_set_powergating_state,
+ amdgpu_cgs_set_clockgating_state,
+ amdgpu_cgs_call_acpi_method,
++ amdgpu_cgs_query_system_info,
+ };
+
+ static const struct cgs_os_ops amdgpu_cgs_os_ops = {
+diff --git a/drivers/gpu/drm/amd/include/cgs_common.h b/drivers/gpu/drm/amd/include/cgs_common.h
+index 8bf6ee5..5ea8db0 100644
+--- a/drivers/gpu/drm/amd/include/cgs_common.h
++++ b/drivers/gpu/drm/amd/include/cgs_common.h
+@@ -105,6 +105,21 @@ enum cgs_ucode_id {
+ CGS_UCODE_ID_MAXIMUM,
+ };
+
++enum cgs_system_info_id {
++ CGS_SYSTEM_INFO_ADAPTER_BDF_ID = 1,
++ CGS_SYSTEM_INFO_ID_MAXIMUM,
++};
++
++struct cgs_system_info {
++ uint64_t size;
++ uint64_t info_id;
++ union {
++ void *ptr;
++ uint64_t value;
++ };
++ uint64_t padding[13];
++};
++
+ /**
+ * struct cgs_clock_limits - Clock limits
+ *
+@@ -533,6 +548,10 @@ typedef int (*cgs_call_acpi_method)(void *cgs_device,
+ uint32_t output_count,
+ uint32_t input_size,
+ uint32_t output_size);
++
++typedef int (*cgs_query_system_info)(void *cgs_device,
++ struct cgs_system_info *sys_info);
++
+ struct cgs_ops {
+ /* memory management calls (similar to KFD interface) */
+ cgs_gpu_mem_info_t gpu_mem_info;
+@@ -575,6 +594,8 @@ struct cgs_ops {
+ cgs_set_clockgating_state set_clockgating_state;
+ /* ACPI */
+ cgs_call_acpi_method call_acpi_method;
++ /* get system info */
++ cgs_query_system_info query_system_info;
+ };
+
+ struct cgs_os_ops; /* To be define in OS-specific CGS header */
+@@ -663,5 +684,7 @@ struct cgs_device
+ CGS_CALL(set_clockgating_state, dev, block_type, state)
+ #define cgs_call_acpi_method(dev, acpi_method, acpi_function, pintput, poutput, output_count, input_size, output_size) \
+ CGS_CALL(call_acpi_method, dev, acpi_method, acpi_function, pintput, poutput, output_count, input_size, output_size)
++#define cgs_query_system_info(dev, sys_info) \
++ CGS_CALL(query_system_info, dev, sys_info)
+
+ #endif /* _CGS_COMMON_H */
+--
+2.7.4
+