aboutsummaryrefslogtreecommitdiffstats
path: root/common/recipes-kernel/linux/files/0628-drm-amd-dal-create-actual-number-of-CRTCs.patch
diff options
context:
space:
mode:
Diffstat (limited to 'common/recipes-kernel/linux/files/0628-drm-amd-dal-create-actual-number-of-CRTCs.patch')
-rw-r--r--common/recipes-kernel/linux/files/0628-drm-amd-dal-create-actual-number-of-CRTCs.patch257
1 files changed, 0 insertions, 257 deletions
diff --git a/common/recipes-kernel/linux/files/0628-drm-amd-dal-create-actual-number-of-CRTCs.patch b/common/recipes-kernel/linux/files/0628-drm-amd-dal-create-actual-number-of-CRTCs.patch
deleted file mode 100644
index 15104b1d..00000000
--- a/common/recipes-kernel/linux/files/0628-drm-amd-dal-create-actual-number-of-CRTCs.patch
+++ /dev/null
@@ -1,257 +0,0 @@
-From d3efc3aa67f80f319aa7f2c7a6fd767292018596 Mon Sep 17 00:00:00 2001
-From: Mykola Lysenko <Mykola.Lysenko@amd.com>
-Date: Tue, 15 Dec 2015 20:29:08 +0800
-Subject: [PATCH 0628/1110] drm/amd/dal: create actual number of CRTCs
-
-For MST we need to create actual number of CRTCs, not
-number of links.
-
-Consider the situation:
-
-1. One DDI DP connector available on board;
-2. One DRM CRTC created for it;
-3. DRM does not allow set mode on newly arrived MST downstream display
-as there is no connectors left, event though 3 is still available.
-
-Signed-off-by: Mykola Lysenko <Mykola.Lysenko@amd.com>
-Acked-by: Jordan Lazare <Jordan.Lazare@amd.com>
----
- drivers/gpu/drm/amd/dal/amdgpu_dm/amdgpu_dm.c | 85 +++++++++-------------
- .../gpu/drm/amd/dal/amdgpu_dm/amdgpu_dm_types.c | 28 +++++--
- .../gpu/drm/amd/dal/amdgpu_dm/amdgpu_dm_types.h | 8 +-
- 3 files changed, 61 insertions(+), 60 deletions(-)
-
-diff --git a/drivers/gpu/drm/amd/dal/amdgpu_dm/amdgpu_dm.c b/drivers/gpu/drm/amd/dal/amdgpu_dm/amdgpu_dm.c
-index f85ce3b..c69ae16 100644
---- a/drivers/gpu/drm/amd/dal/amdgpu_dm/amdgpu_dm.c
-+++ b/drivers/gpu/drm/amd/dal/amdgpu_dm/amdgpu_dm.c
-@@ -578,10 +578,10 @@ error:
-
- void amdgpu_dm_fini(struct amdgpu_device *adev)
- {
-+ amdgpu_dm_destroy_drm_device(&adev->dm);
- /*
- * TODO: pageflip, vlank interrupt
- *
-- * amdgpu_dm_destroy_drm_device(&adev->dm);
- * amdgpu_dm_irq_fini(adev);
- */
-
-@@ -1024,7 +1024,7 @@ void amdgpu_dm_register_backlight_device(struct amdgpu_display_manager *dm)
- int amdgpu_dm_initialize_drm_device(struct amdgpu_device *adev)
- {
- struct amdgpu_display_manager *dm = &adev->dm;
-- uint32_t link_index;
-+ uint32_t i;
- struct amdgpu_connector *aconnector;
- struct amdgpu_encoder *aencoder;
- struct amdgpu_crtc *acrtc;
-@@ -1039,62 +1039,58 @@ int amdgpu_dm_initialize_drm_device(struct amdgpu_device *adev)
- return -1;
- }
-
-+ for (i = 0; i < caps.max_targets; i++) {
-+ acrtc = kzalloc(sizeof(struct amdgpu_crtc), GFP_KERNEL);
-+ if (!acrtc)
-+ goto fail;
-+
-+ if (amdgpu_dm_crtc_init(
-+ dm,
-+ acrtc,
-+ i)) {
-+ DRM_ERROR("KMS: Failed to initialize crtc\n");
-+ kfree(acrtc);
-+ goto fail;
-+ }
-+ }
-+
-+ dm->display_indexes_num = caps.max_targets;
-+
- /* loops over all connectors on the board */
-- for (link_index = 0; link_index < link_cnt; link_index++) {
-+ for (i = 0; i < link_cnt; i++) {
-
-- if (link_index > AMDGPU_DM_MAX_DISPLAY_INDEX) {
-+ if (i > AMDGPU_DM_MAX_DISPLAY_INDEX) {
- DRM_ERROR(
-- "KMS: Cannot support more than %d display indeces\n",
-+ "KMS: Cannot support more than %d display indexes\n",
- AMDGPU_DM_MAX_DISPLAY_INDEX);
- continue;
- }
-
- aconnector = kzalloc(sizeof(*aconnector), GFP_KERNEL);
- if (!aconnector)
-- goto fail_connector;
-+ goto fail;
-
- aencoder = kzalloc(sizeof(*aencoder), GFP_KERNEL);
-- if (!aencoder)
-- goto fail_encoder;
--
-- acrtc = kzalloc(sizeof(struct amdgpu_crtc), GFP_KERNEL);
-- if (!acrtc)
-- goto fail_crtc;
--
-- if (amdgpu_dm_crtc_init(
-- dm,
-- acrtc,
-- link_index)) {
-- DRM_ERROR("KMS: Failed to initialize crtc\n");
-- goto fail;
-+ if (!aencoder) {
-+ goto fail_free_connector;
- }
-
-- if (amdgpu_dm_encoder_init(
-- dm->ddev,
-- aencoder,
-- link_index,
-- acrtc)) {
-+ if (amdgpu_dm_encoder_init(dm->ddev, aencoder, i)) {
- DRM_ERROR("KMS: Failed to initialize encoder\n");
-- goto fail;
-+ goto fail_free_encoder;
- }
-
-- if (amdgpu_dm_connector_init(
-- dm,
-- aconnector,
-- link_index,
-- aencoder)) {
-+ if (amdgpu_dm_connector_init(dm, aconnector, i, aencoder)) {
- DRM_ERROR("KMS: Failed to initialize connector\n");
-- goto fail;
-+ goto fail_free_connector;
- }
-
-- dc_link_detect(dc_get_link_at_index(dm->dc, link_index));
-+ dc_link_detect(dc_get_link_at_index(dm->dc, i));
-
- amdgpu_dm_update_connector_after_detect(
- aconnector);
- }
-
-- dm->display_indexes_num = link_cnt;
--
- /* Software is initialized. Now we can register interrupt handlers. */
- switch (adev->asic_type) {
- case CHIP_CARRIZO:
-@@ -1111,28 +1107,17 @@ int amdgpu_dm_initialize_drm_device(struct amdgpu_device *adev)
- drm_mode_config_reset(dm->ddev);
-
- return 0;
--
-+fail_free_encoder:
-+ kfree(aencoder);
-+fail_free_connector:
-+ kfree(aconnector);
- fail:
-- /* clean any dongling drm structure for the last (corrupted)
-- display target */
-- amdgpu_dm_crtc_destroy(&acrtc->base);
--fail_crtc:
-- amdgpu_dm_encoder_destroy(&aencoder->base);
--fail_encoder:
-- amdgpu_dm_connector_destroy(&aconnector->base);
--fail_connector:
-- if (dm->backlight_dev) {
-- backlight_device_unregister(dm->backlight_dev);
-- dm->backlight_dev = NULL;
-- }
- return -1;
- }
-
--void amdgpu_dm_destroy_drm_device(
-- struct amdgpu_display_manager *dm)
-+void amdgpu_dm_destroy_drm_device(struct amdgpu_display_manager *dm)
- {
- drm_mode_config_cleanup(dm->ddev);
-- /*switch_dev_unregister(&dm->hdmi_audio_dev);*/
- return;
- }
-
-diff --git a/drivers/gpu/drm/amd/dal/amdgpu_dm/amdgpu_dm_types.c b/drivers/gpu/drm/amd/dal/amdgpu_dm/amdgpu_dm_types.c
-index c98fdbf..3189e87 100644
---- a/drivers/gpu/drm/amd/dal/amdgpu_dm/amdgpu_dm_types.c
-+++ b/drivers/gpu/drm/amd/dal/amdgpu_dm/amdgpu_dm_types.c
-@@ -1125,7 +1125,24 @@ int amdgpu_dm_connector_atomic_set_property(
-
- void amdgpu_dm_connector_destroy(struct drm_connector *connector)
- {
-- /*drm_sysfs_connector_remove(connector);*/
-+ struct amdgpu_connector *aconnector = to_amdgpu_connector(connector);
-+ const struct dc_link *link = aconnector->dc_link;
-+ struct amdgpu_device *adev = connector->dev->dev_private;
-+ struct amdgpu_display_manager *dm = &adev->dm;
-+#if defined(CONFIG_BACKLIGHT_CLASS_DEVICE) ||\
-+ defined(CONFIG_BACKLIGHT_CLASS_DEVICE_MODULE)
-+
-+ if (link->connector_signal & (SIGNAL_TYPE_EDP | SIGNAL_TYPE_LVDS)) {
-+ amdgpu_dm_register_backlight_device(dm);
-+
-+ if (dm->backlight_dev) {
-+ backlight_device_unregister(dm->backlight_dev);
-+ dm->backlight_dev = NULL;
-+ }
-+
-+ }
-+#endif
-+ drm_connector_unregister(connector);
- drm_connector_cleanup(connector);
- kfree(connector);
- }
-@@ -1530,7 +1547,7 @@ static uint32_t rgb_formats[] = {
-
- int amdgpu_dm_crtc_init(struct amdgpu_display_manager *dm,
- struct amdgpu_crtc *acrtc,
-- uint32_t link_index)
-+ uint32_t crtc_index)
- {
- int res = -ENOMEM;
-
-@@ -1571,10 +1588,10 @@ int amdgpu_dm_crtc_init(struct amdgpu_display_manager *dm,
- acrtc->max_cursor_width = 128;
- acrtc->max_cursor_height = 128;
-
-- acrtc->crtc_id = link_index;
-+ acrtc->crtc_id = crtc_index;
- acrtc->base.enabled = false;
-
-- dm->adev->mode_info.crtcs[link_index] = acrtc;
-+ dm->adev->mode_info.crtcs[crtc_index] = acrtc;
- drm_mode_crtc_set_gamma_size(&acrtc->base, 256);
-
- return 0;
-@@ -1897,8 +1914,7 @@ int amdgpu_dm_get_encoder_crtc_mask(struct amdgpu_device *adev)
- int amdgpu_dm_encoder_init(
- struct drm_device *dev,
- struct amdgpu_encoder *aencoder,
-- uint32_t link_index,
-- struct amdgpu_crtc *acrtc)
-+ uint32_t link_index)
- {
- struct amdgpu_device *adev = dev->dev_private;
-
-diff --git a/drivers/gpu/drm/amd/dal/amdgpu_dm/amdgpu_dm_types.h b/drivers/gpu/drm/amd/dal/amdgpu_dm/amdgpu_dm_types.h
-index 5d1152e..d737e33 100644
---- a/drivers/gpu/drm/amd/dal/amdgpu_dm/amdgpu_dm_types.h
-+++ b/drivers/gpu/drm/amd/dal/amdgpu_dm/amdgpu_dm_types.h
-@@ -43,10 +43,10 @@ int amdgpu_dm_connector_init(struct amdgpu_display_manager *dm,
- struct amdgpu_connector *amdgpu_connector,
- uint32_t link_index,
- struct amdgpu_encoder *amdgpu_encoder);
--int amdgpu_dm_encoder_init(struct drm_device *dev,
-- struct amdgpu_encoder *amdgpu_encoder,
-- uint32_t link_index,
-- struct amdgpu_crtc *amdgpu_crtc);
-+int amdgpu_dm_encoder_init(
-+ struct drm_device *dev,
-+ struct amdgpu_encoder *aencoder,
-+ uint32_t link_index);
-
- void amdgpu_dm_crtc_destroy(struct drm_crtc *crtc);
- void amdgpu_dm_connector_destroy(struct drm_connector *connector);
---
-2.7.4
-