aboutsummaryrefslogtreecommitdiffstats
path: root/common/recipes-kernel/linux/linux-yocto-4.19.8/0455-drm-amd-display-Flatten-irq-handler-data-struct.patch
diff options
context:
space:
mode:
Diffstat (limited to 'common/recipes-kernel/linux/linux-yocto-4.19.8/0455-drm-amd-display-Flatten-irq-handler-data-struct.patch')
-rw-r--r--common/recipes-kernel/linux/linux-yocto-4.19.8/0455-drm-amd-display-Flatten-irq-handler-data-struct.patch130
1 files changed, 130 insertions, 0 deletions
diff --git a/common/recipes-kernel/linux/linux-yocto-4.19.8/0455-drm-amd-display-Flatten-irq-handler-data-struct.patch b/common/recipes-kernel/linux/linux-yocto-4.19.8/0455-drm-amd-display-Flatten-irq-handler-data-struct.patch
new file mode 100644
index 00000000..d2ee5705
--- /dev/null
+++ b/common/recipes-kernel/linux/linux-yocto-4.19.8/0455-drm-amd-display-Flatten-irq-handler-data-struct.patch
@@ -0,0 +1,130 @@
+From 0e31fcafce89a7532976019fb46807d39ba6c023 Mon Sep 17 00:00:00 2001
+From: Leo Li <sunpeng.li@amd.com>
+Date: Tue, 18 Sep 2018 10:21:35 -0400
+Subject: [PATCH 0455/2940] drm/amd/display: Flatten irq handler data struct
+
+[Why]
+There is no reason why the common data needs to be kept separate.
+
+[How]
+Flatten the struct by moving common data into the DM IRQ struct.
+
+Signed-off-by: Leo Li <sunpeng.li@amd.com>
+Reviewed-by: David Francis <David.Francis@amd.com>
+Acked-by: Leo Li <sunpeng.li@amd.com>
+---
+ .../drm/amd/display/amdgpu_dm/amdgpu_dm_irq.c | 37 +++++++------------
+ 1 file changed, 14 insertions(+), 23 deletions(-)
+
+diff --git a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_irq.c b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_irq.c
+index a910f01838ab..a212178f2edc 100644
+--- a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_irq.c
++++ b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_irq.c
+@@ -36,17 +36,13 @@
+ * Private declarations.
+ *****************************************************************************/
+
+-struct handler_common_data {
++struct amdgpu_dm_irq_handler_data {
+ struct list_head list;
+ interrupt_handler handler;
+ void *handler_arg;
+
+ /* DM which this handler belongs to */
+ struct amdgpu_display_manager *dm;
+-};
+-
+-struct amdgpu_dm_irq_handler_data {
+- struct handler_common_data hcd;
+ /* DAL irq source which registered for this interrupt. */
+ enum dc_irq_source irq_source;
+ };
+@@ -61,7 +57,7 @@ struct amdgpu_dm_irq_handler_data {
+ * Private functions.
+ *****************************************************************************/
+
+-static void init_handler_common_data(struct handler_common_data *hcd,
++static void init_handler_common_data(struct amdgpu_dm_irq_handler_data *hcd,
+ void (*ih)(void *),
+ void *args,
+ struct amdgpu_display_manager *dm)
+@@ -85,11 +81,9 @@ static void dm_irq_work_func(struct work_struct *work)
+ struct amdgpu_dm_irq_handler_data *handler_data;
+
+ list_for_each(entry, handler_list) {
+- handler_data =
+- list_entry(
+- entry,
+- struct amdgpu_dm_irq_handler_data,
+- hcd.list);
++ handler_data = list_entry(entry,
++ struct amdgpu_dm_irq_handler_data,
++ list);
+
+ DRM_DEBUG_KMS("DM_IRQ: work_func: for dal_src=%d\n",
+ handler_data->irq_source);
+@@ -97,7 +91,7 @@ static void dm_irq_work_func(struct work_struct *work)
+ DRM_DEBUG_KMS("DM_IRQ: schedule_work: for dal_src=%d\n",
+ handler_data->irq_source);
+
+- handler_data->hcd.handler(handler_data->hcd.handler_arg);
++ handler_data->handler(handler_data->handler_arg);
+ }
+
+ /* Call a DAL subcomponent which registered for interrupt notification
+@@ -137,11 +131,11 @@ static struct list_head *remove_irq_handler(struct amdgpu_device *adev,
+ list_for_each_safe(entry, tmp, hnd_list) {
+
+ handler = list_entry(entry, struct amdgpu_dm_irq_handler_data,
+- hcd.list);
++ list);
+
+ if (ih == handler) {
+ /* Found our handler. Remove it from the list. */
+- list_del(&handler->hcd.list);
++ list_del(&handler->list);
+ handler_removed = true;
+ break;
+ }
+@@ -230,8 +224,7 @@ void *amdgpu_dm_irq_register_interrupt(struct amdgpu_device *adev,
+
+ memset(handler_data, 0, sizeof(*handler_data));
+
+- init_handler_common_data(&handler_data->hcd, ih, handler_args,
+- &adev->dm);
++ init_handler_common_data(handler_data, ih, handler_args, &adev->dm);
+
+ irq_source = int_params->irq_source;
+
+@@ -250,7 +243,7 @@ void *amdgpu_dm_irq_register_interrupt(struct amdgpu_device *adev,
+ break;
+ }
+
+- list_add_tail(&handler_data->hcd.list, hnd_list);
++ list_add_tail(&handler_data->list, hnd_list);
+
+ DM_IRQ_TABLE_UNLOCK(adev, irq_table_flags);
+
+@@ -462,15 +455,13 @@ static void amdgpu_dm_irq_immediate_work(struct amdgpu_device *adev,
+ entry,
+ &adev->dm.irq_handler_list_high_tab[irq_source]) {
+
+- handler_data =
+- list_entry(
+- entry,
+- struct amdgpu_dm_irq_handler_data,
+- hcd.list);
++ handler_data = list_entry(entry,
++ struct amdgpu_dm_irq_handler_data,
++ list);
+
+ /* Call a subcomponent which registered for immediate
+ * interrupt notification */
+- handler_data->hcd.handler(handler_data->hcd.handler_arg);
++ handler_data->handler(handler_data->handler_arg);
+ }
+
+ DM_IRQ_TABLE_UNLOCK(adev, irq_table_flags);
+--
+2.17.1
+