Commit ef4bccbd authored by Andrey Grodzovsky's avatar Andrey Grodzovsky Committed by Alex Deucher
Browse files

drm/amd/display: Remove timer handler.



Dead code, looks obsolete.

Signed-off-by: default avatarAndrey Grodzovsky <andrey.grodzovsky@amd.com>
Reviewed-by: default avatarHarry Wentland <harry.wentland@amd.com>
Signed-off-by: default avatarAlex Deucher <alexander.deucher@amd.com>
parent d45d97b2
Loading
Loading
Loading
Loading
+0 −4
Original line number Diff line number Diff line
@@ -117,10 +117,6 @@ struct amdgpu_display_manager {
	/* this spin lock synchronizes access to 'irq_handler_list_table' */
	spinlock_t irq_handler_list_table_lock;

	/* Timer-related data. */
	struct list_head timer_handler_list;
	struct workqueue_struct *timer_workqueue;

	struct backlight_device *backlight_dev;

	const struct dc_link *backlight_link;
+0 −76
Original line number Diff line number Diff line
@@ -51,11 +51,6 @@ struct amdgpu_dm_irq_handler_data {
	enum dc_irq_source irq_source;
};

struct amdgpu_dm_timer_handler_data {
	struct handler_common_data hcd;
	struct delayed_work d_work;
};

#define DM_IRQ_TABLE_LOCK(adev, flags) \
	spin_lock_irqsave(&adev->dm.irq_handler_list_table_lock, flags)

@@ -169,62 +164,6 @@ static struct list_head *remove_irq_handler(struct amdgpu_device *adev,
	return hnd_list;
}

/* If 'handler_in == NULL' then remove ALL handlers. */
static void remove_timer_handler(struct amdgpu_device *adev,
				 struct amdgpu_dm_timer_handler_data *handler_in)
{
	struct amdgpu_dm_timer_handler_data *handler_temp;
	struct list_head *handler_list;
	struct list_head *entry, *tmp;
	unsigned long irq_table_flags;
	bool handler_removed = false;

	DM_IRQ_TABLE_LOCK(adev, irq_table_flags);

	handler_list = &adev->dm.timer_handler_list;

	list_for_each_safe(entry, tmp, handler_list) {
		/* Note that list_for_each_safe() guarantees that
		 * handler_temp is NOT null. */
		handler_temp = list_entry(entry,
				struct amdgpu_dm_timer_handler_data, hcd.list);

		if (handler_in == NULL || handler_in == handler_temp) {
			list_del(&handler_temp->hcd.list);
			DM_IRQ_TABLE_UNLOCK(adev, irq_table_flags);

			DRM_DEBUG_KMS("DM_IRQ: removing timer handler: %p\n",
					handler_temp);

			if (handler_in == NULL) {
				/* Since it is still in the queue, it must
				 * be cancelled. */
				cancel_delayed_work_sync(&handler_temp->d_work);
			}

			kfree(handler_temp);
			handler_removed = true;

			DM_IRQ_TABLE_LOCK(adev, irq_table_flags);
		}

		/* Remove ALL handlers. */
		if (handler_in == NULL)
			continue;

		/* Remove a SPECIFIC handler.
		 * Found our handler - we can stop here. */
		if (handler_in == handler_temp)
			break;
	}

	DM_IRQ_TABLE_UNLOCK(adev, irq_table_flags);

	if (handler_in != NULL && handler_removed == false)
		DRM_ERROR("DM_IRQ: handler: %p is not in the list!\n",
				handler_in);
}

static bool
validate_irq_registration_params(struct dc_interrupt_params *int_params,
				 void (*ih)(void *))
@@ -382,16 +321,6 @@ int amdgpu_dm_irq_init(struct amdgpu_device *adev)
		INIT_LIST_HEAD(&adev->dm.irq_handler_list_high_tab[src]);
	}

	INIT_LIST_HEAD(&adev->dm.timer_handler_list);

	/* allocate and initialize the workqueue for DM timer */
	adev->dm.timer_workqueue = create_singlethread_workqueue(
			"dm_timer_queue");
	if (adev->dm.timer_workqueue == NULL) {
		DRM_ERROR("DM_IRQ: unable to create timer queue!\n");
		return -1;
	}

	return 0;
}

@@ -410,11 +339,6 @@ void amdgpu_dm_irq_fini(struct amdgpu_device *adev)
		lh = &adev->dm.irq_handler_list_low_tab[src];
		flush_work(&lh->work);
	}

	/* Cancel ALL timers and release handlers (if any). */
	remove_timer_handler(adev, NULL);
	/* Release the queue itself. */
	destroy_workqueue(adev->dm.timer_workqueue);
}

int amdgpu_dm_irq_suspend(struct amdgpu_device *adev)