diff options
author | Harry Wentland <harry.wentland@amd.com> | 2017-07-24 14:04:27 -0400 |
---|---|---|
committer | Alex Deucher <alexander.deucher@amd.com> | 2017-09-26 18:15:37 -0400 |
commit | b73a22d3257f9ec237c46be12d74b58d5a925d8c (patch) | |
tree | c55b0c423db3ed022bb5b6fa1f56828eba378bd2 | |
parent | 89899039356a645c1cebe5a454d3577aa1f42bf2 (diff) |
drm/amd/display: Roll core_sink into dc_sink
Signed-off-by: Harry Wentland <harry.wentland@amd.com>
Reviewed-by: Tony Cheng <Tony.Cheng@amd.com>
Acked-by: Harry Wentland <Harry.Wentland@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
-rw-r--r-- | drivers/gpu/drm/amd/amdgpu/amdgpu_mode.h | 4 | ||||
-rw-r--r-- | drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c | 2 | ||||
-rw-r--r-- | drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_types.c | 4 | ||||
-rw-r--r-- | drivers/gpu/drm/amd/display/dc/core/dc.c | 4 | ||||
-rw-r--r-- | drivers/gpu/drm/amd/display/dc/core/dc_link.c | 60 | ||||
-rw-r--r-- | drivers/gpu/drm/amd/display/dc/core/dc_resource.c | 2 | ||||
-rw-r--r-- | drivers/gpu/drm/amd/display/dc/core/dc_sink.c | 30 | ||||
-rw-r--r-- | drivers/gpu/drm/amd/display/dc/core/dc_stream.c | 15 | ||||
-rw-r--r-- | drivers/gpu/drm/amd/display/dc/dc.h | 19 | ||||
-rw-r--r-- | drivers/gpu/drm/amd/display/dc/dce110/dce110_hw_sequencer.c | 2 | ||||
-rw-r--r-- | drivers/gpu/drm/amd/display/dc/inc/core_types.h | 21 |
11 files changed, 72 insertions, 91 deletions
diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_mode.h b/drivers/gpu/drm/amd/amdgpu/amdgpu_mode.h index c558f700df35..8d939e3b3f15 100644 --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_mode.h +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_mode.h | |||
@@ -562,9 +562,9 @@ struct amdgpu_connector { | |||
562 | int num_modes; | 562 | int num_modes; |
563 | /* The 'old' sink - before an HPD. | 563 | /* The 'old' sink - before an HPD. |
564 | * The 'current' sink is in dc_link->sink. */ | 564 | * The 'current' sink is in dc_link->sink. */ |
565 | const struct dc_sink *dc_sink; | 565 | struct dc_sink *dc_sink; |
566 | struct dc_link *dc_link; | 566 | struct dc_link *dc_link; |
567 | const struct dc_sink *dc_em_sink; | 567 | struct dc_sink *dc_em_sink; |
568 | const struct dc_stream *stream; | 568 | const struct dc_stream *stream; |
569 | void *con_priv; | 569 | void *con_priv; |
570 | bool dac_load_detect; | 570 | bool dac_load_detect; |
diff --git a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c index 26fbadba97dd..696a4112c8d9 100644 --- a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c +++ b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c | |||
@@ -697,7 +697,7 @@ void amdgpu_dm_update_connector_after_detect( | |||
697 | { | 697 | { |
698 | struct drm_connector *connector = &aconnector->base; | 698 | struct drm_connector *connector = &aconnector->base; |
699 | struct drm_device *dev = connector->dev; | 699 | struct drm_device *dev = connector->dev; |
700 | const struct dc_sink *sink; | 700 | struct dc_sink *sink; |
701 | 701 | ||
702 | /* MST handled by drm_mst framework */ | 702 | /* MST handled by drm_mst framework */ |
703 | if (aconnector->mst_mgr.mst_state == true) | 703 | if (aconnector->mst_mgr.mst_state == true) |
diff --git a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_types.c b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_types.c index 4885403f5cec..13708bcb83cd 100644 --- a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_types.c +++ b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_types.c | |||
@@ -1266,7 +1266,7 @@ int amdgpu_dm_connector_mode_valid( | |||
1266 | struct drm_display_mode *mode) | 1266 | struct drm_display_mode *mode) |
1267 | { | 1267 | { |
1268 | int result = MODE_ERROR; | 1268 | int result = MODE_ERROR; |
1269 | const struct dc_sink *dc_sink; | 1269 | struct dc_sink *dc_sink; |
1270 | struct amdgpu_device *adev = connector->dev->dev_private; | 1270 | struct amdgpu_device *adev = connector->dev->dev_private; |
1271 | struct dc_validation_set val_set = { 0 }; | 1271 | struct dc_validation_set val_set = { 0 }; |
1272 | /* TODO: Unhardcode stream count */ | 1272 | /* TODO: Unhardcode stream count */ |
@@ -1535,7 +1535,7 @@ int dm_create_validation_set_for_connector(struct drm_connector *connector, | |||
1535 | struct drm_display_mode *mode, struct dc_validation_set *val_set) | 1535 | struct drm_display_mode *mode, struct dc_validation_set *val_set) |
1536 | { | 1536 | { |
1537 | int result = MODE_ERROR; | 1537 | int result = MODE_ERROR; |
1538 | const struct dc_sink *dc_sink = | 1538 | struct dc_sink *dc_sink = |
1539 | to_amdgpu_connector(connector)->dc_sink; | 1539 | to_amdgpu_connector(connector)->dc_sink; |
1540 | /* TODO: Unhardcode stream count */ | 1540 | /* TODO: Unhardcode stream count */ |
1541 | struct dc_stream *stream; | 1541 | struct dc_stream *stream; |
diff --git a/drivers/gpu/drm/amd/display/dc/core/dc.c b/drivers/gpu/drm/amd/display/dc/core/dc.c index 73740e2a5819..30374ffaae0b 100644 --- a/drivers/gpu/drm/amd/display/dc/core/dc.c +++ b/drivers/gpu/drm/amd/display/dc/core/dc.c | |||
@@ -939,7 +939,7 @@ static bool dc_commit_context_no_check(struct dc *dc, struct validate_context *c | |||
939 | program_timing_sync(core_dc, context); | 939 | program_timing_sync(core_dc, context); |
940 | 940 | ||
941 | for (i = 0; i < context->stream_count; i++) { | 941 | for (i = 0; i < context->stream_count; i++) { |
942 | const struct core_sink *sink = context->streams[i]->sink; | 942 | const struct dc_sink *sink = context->streams[i]->sink; |
943 | 943 | ||
944 | for (j = 0; j < context->stream_status[i].surface_count; j++) { | 944 | for (j = 0; j < context->stream_status[i].surface_count; j++) { |
945 | const struct dc_surface *surface = | 945 | const struct dc_surface *surface = |
@@ -1984,7 +1984,7 @@ void dc_link_set_sink(struct dc_link *link, struct dc_sink *sink) | |||
1984 | } | 1984 | } |
1985 | } | 1985 | } |
1986 | 1986 | ||
1987 | void dc_link_remove_remote_sink(struct dc_link *link, const struct dc_sink *sink) | 1987 | void dc_link_remove_remote_sink(struct dc_link *link, struct dc_sink *sink) |
1988 | { | 1988 | { |
1989 | int i; | 1989 | int i; |
1990 | 1990 | ||
diff --git a/drivers/gpu/drm/amd/display/dc/core/dc_link.c b/drivers/gpu/drm/amd/display/dc/core/dc_link.c index 428dbff8505b..e7062069d9a1 100644 --- a/drivers/gpu/drm/amd/display/dc/core/dc_link.c +++ b/drivers/gpu/drm/amd/display/dc/core/dc_link.c | |||
@@ -541,8 +541,7 @@ bool dc_link_detect(struct dc_link *link, bool boot) | |||
541 | struct audio_support *aud_support = &link->dc->res_pool->audio_support; | 541 | struct audio_support *aud_support = &link->dc->res_pool->audio_support; |
542 | enum dc_edid_status edid_status; | 542 | enum dc_edid_status edid_status; |
543 | struct dc_context *dc_ctx = link->ctx; | 543 | struct dc_context *dc_ctx = link->ctx; |
544 | struct dc_sink *dc_sink; | 544 | struct dc_sink *sink; |
545 | struct core_sink *sink = NULL; | ||
546 | enum dc_connection_type new_connection_type = dc_connection_none; | 545 | enum dc_connection_type new_connection_type = dc_connection_none; |
547 | 546 | ||
548 | if (link->connector_signal == SIGNAL_TYPE_VIRTUAL) | 547 | if (link->connector_signal == SIGNAL_TYPE_VIRTUAL) |
@@ -637,22 +636,21 @@ bool dc_link_detect(struct dc_link *link, bool boot) | |||
637 | sink_init_data.link = link; | 636 | sink_init_data.link = link; |
638 | sink_init_data.sink_signal = sink_caps.signal; | 637 | sink_init_data.sink_signal = sink_caps.signal; |
639 | 638 | ||
640 | dc_sink = dc_sink_create(&sink_init_data); | 639 | sink = dc_sink_create(&sink_init_data); |
641 | if (!dc_sink) { | 640 | if (!sink) { |
642 | DC_ERROR("Failed to create sink!\n"); | 641 | DC_ERROR("Failed to create sink!\n"); |
643 | return false; | 642 | return false; |
644 | } | 643 | } |
645 | 644 | ||
646 | dc_sink->dongle_max_pix_clk = sink_caps.max_hdmi_pixel_clock; | 645 | sink->dongle_max_pix_clk = sink_caps.max_hdmi_pixel_clock; |
647 | dc_sink->converter_disable_audio = converter_disable_audio; | 646 | sink->converter_disable_audio = converter_disable_audio; |
648 | 647 | ||
649 | sink = DC_SINK_TO_CORE(dc_sink); | 648 | link->local_sink = sink; |
650 | link->local_sink = &sink->public; | ||
651 | 649 | ||
652 | edid_status = dm_helpers_read_local_edid( | 650 | edid_status = dm_helpers_read_local_edid( |
653 | link->ctx, | 651 | link->ctx, |
654 | link, | 652 | link, |
655 | &sink->public); | 653 | sink); |
656 | 654 | ||
657 | switch (edid_status) { | 655 | switch (edid_status) { |
658 | case EDID_BAD_CHECKSUM: | 656 | case EDID_BAD_CHECKSUM: |
@@ -669,16 +667,16 @@ bool dc_link_detect(struct dc_link *link, bool boot) | |||
669 | } | 667 | } |
670 | 668 | ||
671 | /* HDMI-DVI Dongle */ | 669 | /* HDMI-DVI Dongle */ |
672 | if (dc_sink->sink_signal == SIGNAL_TYPE_HDMI_TYPE_A && | 670 | if (sink->sink_signal == SIGNAL_TYPE_HDMI_TYPE_A && |
673 | !dc_sink->edid_caps.edid_hdmi) | 671 | !sink->edid_caps.edid_hdmi) |
674 | dc_sink->sink_signal = SIGNAL_TYPE_DVI_SINGLE_LINK; | 672 | sink->sink_signal = SIGNAL_TYPE_DVI_SINGLE_LINK; |
675 | 673 | ||
676 | /* Connectivity log: detection */ | 674 | /* Connectivity log: detection */ |
677 | for (i = 0; i < sink->public.dc_edid.length / EDID_BLOCK_SIZE; i++) { | 675 | for (i = 0; i < sink->dc_edid.length / EDID_BLOCK_SIZE; i++) { |
678 | CONN_DATA_DETECT(link, | 676 | CONN_DATA_DETECT(link, |
679 | &sink->public.dc_edid.raw_edid[i * EDID_BLOCK_SIZE], | 677 | &sink->dc_edid.raw_edid[i * EDID_BLOCK_SIZE], |
680 | EDID_BLOCK_SIZE, | 678 | EDID_BLOCK_SIZE, |
681 | "%s: [Block %d] ", sink->public.edid_caps.display_name, i); | 679 | "%s: [Block %d] ", sink->edid_caps.display_name, i); |
682 | } | 680 | } |
683 | 681 | ||
684 | dm_logger_write(link->ctx->logger, LOG_DETECTION_EDID_PARSER, | 682 | dm_logger_write(link->ctx->logger, LOG_DETECTION_EDID_PARSER, |
@@ -692,16 +690,16 @@ bool dc_link_detect(struct dc_link *link, bool boot) | |||
692 | "speaker_flag = %d, " | 690 | "speaker_flag = %d, " |
693 | "audio_mode_count = %d\n", | 691 | "audio_mode_count = %d\n", |
694 | __func__, | 692 | __func__, |
695 | sink->public.edid_caps.manufacturer_id, | 693 | sink->edid_caps.manufacturer_id, |
696 | sink->public.edid_caps.product_id, | 694 | sink->edid_caps.product_id, |
697 | sink->public.edid_caps.serial_number, | 695 | sink->edid_caps.serial_number, |
698 | sink->public.edid_caps.manufacture_week, | 696 | sink->edid_caps.manufacture_week, |
699 | sink->public.edid_caps.manufacture_year, | 697 | sink->edid_caps.manufacture_year, |
700 | sink->public.edid_caps.display_name, | 698 | sink->edid_caps.display_name, |
701 | sink->public.edid_caps.speaker_flags, | 699 | sink->edid_caps.speaker_flags, |
702 | sink->public.edid_caps.audio_mode_count); | 700 | sink->edid_caps.audio_mode_count); |
703 | 701 | ||
704 | for (i = 0; i < sink->public.edid_caps.audio_mode_count; i++) { | 702 | for (i = 0; i < sink->edid_caps.audio_mode_count; i++) { |
705 | dm_logger_write(link->ctx->logger, LOG_DETECTION_EDID_PARSER, | 703 | dm_logger_write(link->ctx->logger, LOG_DETECTION_EDID_PARSER, |
706 | "%s: mode number = %d, " | 704 | "%s: mode number = %d, " |
707 | "format_code = %d, " | 705 | "format_code = %d, " |
@@ -710,10 +708,10 @@ bool dc_link_detect(struct dc_link *link, bool boot) | |||
710 | "sample_size = %d\n", | 708 | "sample_size = %d\n", |
711 | __func__, | 709 | __func__, |
712 | i, | 710 | i, |
713 | sink->public.edid_caps.audio_modes[i].format_code, | 711 | sink->edid_caps.audio_modes[i].format_code, |
714 | sink->public.edid_caps.audio_modes[i].channel_count, | 712 | sink->edid_caps.audio_modes[i].channel_count, |
715 | sink->public.edid_caps.audio_modes[i].sample_rate, | 713 | sink->edid_caps.audio_modes[i].sample_rate, |
716 | sink->public.edid_caps.audio_modes[i].sample_size); | 714 | sink->edid_caps.audio_modes[i].sample_size); |
717 | } | 715 | } |
718 | 716 | ||
719 | } else { | 717 | } else { |
@@ -732,7 +730,7 @@ bool dc_link_detect(struct dc_link *link, bool boot) | |||
732 | } | 730 | } |
733 | 731 | ||
734 | LINK_INFO("link=%d, dc_sink_in=%p is now %s\n", | 732 | LINK_INFO("link=%d, dc_sink_in=%p is now %s\n", |
735 | link->link_index, &sink->public, | 733 | link->link_index, sink, |
736 | (sink_caps.signal == SIGNAL_TYPE_NONE ? | 734 | (sink_caps.signal == SIGNAL_TYPE_NONE ? |
737 | "Disconnected":"Connected")); | 735 | "Disconnected":"Connected")); |
738 | 736 | ||
@@ -1347,7 +1345,7 @@ enum dc_status dc_link_validate_mode_timing( | |||
1347 | struct dc_link *link, | 1345 | struct dc_link *link, |
1348 | const struct dc_crtc_timing *timing) | 1346 | const struct dc_crtc_timing *timing) |
1349 | { | 1347 | { |
1350 | uint32_t max_pix_clk = stream->sink->public.dongle_max_pix_clk; | 1348 | uint32_t max_pix_clk = stream->sink->dongle_max_pix_clk; |
1351 | 1349 | ||
1352 | /* A hack to avoid failing any modes for EDID override feature on | 1350 | /* A hack to avoid failing any modes for EDID override feature on |
1353 | * topology change such as lower quality cable for DP or different dongle | 1351 | * topology change such as lower quality cable for DP or different dongle |
diff --git a/drivers/gpu/drm/amd/display/dc/core/dc_resource.c b/drivers/gpu/drm/amd/display/dc/core/dc_resource.c index 7a3d090f8465..7cb572ff3cba 100644 --- a/drivers/gpu/drm/amd/display/dc/core/dc_resource.c +++ b/drivers/gpu/drm/amd/display/dc/core/dc_resource.c | |||
@@ -1528,7 +1528,7 @@ enum dc_status resource_map_pool_resources( | |||
1528 | pipe_ctx->stream_enc); | 1528 | pipe_ctx->stream_enc); |
1529 | 1529 | ||
1530 | /* TODO: Add check if ASIC support and EDID audio */ | 1530 | /* TODO: Add check if ASIC support and EDID audio */ |
1531 | if (!stream->sink->public.converter_disable_audio && | 1531 | if (!stream->sink->converter_disable_audio && |
1532 | dc_is_audio_capable_signal(pipe_ctx->stream->signal) && | 1532 | dc_is_audio_capable_signal(pipe_ctx->stream->signal) && |
1533 | stream->public.audio_info.mode_count) { | 1533 | stream->public.audio_info.mode_count) { |
1534 | pipe_ctx->audio = find_first_free_audio( | 1534 | pipe_ctx->audio = find_first_free_audio( |
diff --git a/drivers/gpu/drm/amd/display/dc/core/dc_sink.c b/drivers/gpu/drm/amd/display/dc/core/dc_sink.c index 1f7985ad5dba..a83f1243a9d1 100644 --- a/drivers/gpu/drm/amd/display/dc/core/dc_sink.c +++ b/drivers/gpu/drm/amd/display/dc/core/dc_sink.c | |||
@@ -31,15 +31,15 @@ | |||
31 | * Private functions | 31 | * Private functions |
32 | ******************************************************************************/ | 32 | ******************************************************************************/ |
33 | 33 | ||
34 | static void destruct(struct core_sink *sink) | 34 | static void destruct(struct dc_sink *sink) |
35 | { | 35 | { |
36 | if (sink->public.dc_container_id) { | 36 | if (sink->dc_container_id) { |
37 | dm_free(sink->public.dc_container_id); | 37 | dm_free(sink->dc_container_id); |
38 | sink->public.dc_container_id = NULL; | 38 | sink->dc_container_id = NULL; |
39 | } | 39 | } |
40 | } | 40 | } |
41 | 41 | ||
42 | static bool construct(struct core_sink *sink, const struct dc_sink_init_data *init_params) | 42 | static bool construct(struct dc_sink *sink, const struct dc_sink_init_data *init_params) |
43 | { | 43 | { |
44 | 44 | ||
45 | struct dc_link *link = init_params->link; | 45 | struct dc_link *link = init_params->link; |
@@ -47,12 +47,12 @@ static bool construct(struct core_sink *sink, const struct dc_sink_init_data *in | |||
47 | if (!link) | 47 | if (!link) |
48 | return false; | 48 | return false; |
49 | 49 | ||
50 | sink->public.sink_signal = init_params->sink_signal; | 50 | sink->sink_signal = init_params->sink_signal; |
51 | sink->link = link; | 51 | sink->link = link; |
52 | sink->ctx = link->ctx; | 52 | sink->ctx = link->ctx; |
53 | sink->public.dongle_max_pix_clk = init_params->dongle_max_pix_clk; | 53 | sink->dongle_max_pix_clk = init_params->dongle_max_pix_clk; |
54 | sink->public.converter_disable_audio = init_params->converter_disable_audio; | 54 | sink->converter_disable_audio = init_params->converter_disable_audio; |
55 | sink->public.dc_container_id = NULL; | 55 | sink->dc_container_id = NULL; |
56 | 56 | ||
57 | return true; | 57 | return true; |
58 | } | 58 | } |
@@ -61,18 +61,14 @@ static bool construct(struct core_sink *sink, const struct dc_sink_init_data *in | |||
61 | * Public functions | 61 | * Public functions |
62 | ******************************************************************************/ | 62 | ******************************************************************************/ |
63 | 63 | ||
64 | void dc_sink_retain(const struct dc_sink *dc_sink) | 64 | void dc_sink_retain(struct dc_sink *sink) |
65 | { | 65 | { |
66 | struct core_sink *sink = DC_SINK_TO_CORE(dc_sink); | ||
67 | |||
68 | ASSERT(sink->ref_count > 0); | 66 | ASSERT(sink->ref_count > 0); |
69 | ++sink->ref_count; | 67 | ++sink->ref_count; |
70 | } | 68 | } |
71 | 69 | ||
72 | void dc_sink_release(const struct dc_sink *dc_sink) | 70 | void dc_sink_release(struct dc_sink *sink) |
73 | { | 71 | { |
74 | struct core_sink *sink = DC_SINK_TO_CORE(dc_sink); | ||
75 | |||
76 | ASSERT(sink->ref_count > 0); | 72 | ASSERT(sink->ref_count > 0); |
77 | --sink->ref_count; | 73 | --sink->ref_count; |
78 | 74 | ||
@@ -84,7 +80,7 @@ void dc_sink_release(const struct dc_sink *dc_sink) | |||
84 | 80 | ||
85 | struct dc_sink *dc_sink_create(const struct dc_sink_init_data *init_params) | 81 | struct dc_sink *dc_sink_create(const struct dc_sink_init_data *init_params) |
86 | { | 82 | { |
87 | struct core_sink *sink = dm_alloc(sizeof(*sink)); | 83 | struct dc_sink *sink = dm_alloc(sizeof(*sink)); |
88 | 84 | ||
89 | if (NULL == sink) | 85 | if (NULL == sink) |
90 | goto alloc_fail; | 86 | goto alloc_fail; |
@@ -94,7 +90,7 @@ struct dc_sink *dc_sink_create(const struct dc_sink_init_data *init_params) | |||
94 | 90 | ||
95 | ++sink->ref_count; | 91 | ++sink->ref_count; |
96 | 92 | ||
97 | return &sink->public; | 93 | return sink; |
98 | 94 | ||
99 | construct_fail: | 95 | construct_fail: |
100 | dm_free(sink); | 96 | dm_free(sink); |
diff --git a/drivers/gpu/drm/amd/display/dc/core/dc_stream.c b/drivers/gpu/drm/amd/display/dc/core/dc_stream.c index a329709de360..5b356ddf5614 100644 --- a/drivers/gpu/drm/amd/display/dc/core/dc_stream.c +++ b/drivers/gpu/drm/amd/display/dc/core/dc_stream.c | |||
@@ -46,11 +46,11 @@ struct stream { | |||
46 | ******************************************************************************/ | 46 | ******************************************************************************/ |
47 | 47 | ||
48 | static bool construct(struct core_stream *stream, | 48 | static bool construct(struct core_stream *stream, |
49 | const struct dc_sink *dc_sink_data) | 49 | struct dc_sink *dc_sink_data) |
50 | { | 50 | { |
51 | uint32_t i = 0; | 51 | uint32_t i = 0; |
52 | 52 | ||
53 | stream->sink = DC_SINK_TO_CORE(dc_sink_data); | 53 | stream->sink = dc_sink_data; |
54 | stream->ctx = stream->sink->ctx; | 54 | stream->ctx = stream->sink->ctx; |
55 | stream->public.sink = dc_sink_data; | 55 | stream->public.sink = dc_sink_data; |
56 | 56 | ||
@@ -97,7 +97,7 @@ static bool construct(struct core_stream *stream, | |||
97 | 97 | ||
98 | static void destruct(struct core_stream *stream) | 98 | static void destruct(struct core_stream *stream) |
99 | { | 99 | { |
100 | dc_sink_release(&stream->sink->public); | 100 | dc_sink_release(stream->sink); |
101 | if (stream->public.out_transfer_func != NULL) { | 101 | if (stream->public.out_transfer_func != NULL) { |
102 | dc_transfer_func_release( | 102 | dc_transfer_func_release( |
103 | stream->public.out_transfer_func); | 103 | stream->public.out_transfer_func); |
@@ -130,9 +130,8 @@ void dc_stream_release(const struct dc_stream *public) | |||
130 | } | 130 | } |
131 | 131 | ||
132 | struct dc_stream *dc_create_stream_for_sink( | 132 | struct dc_stream *dc_create_stream_for_sink( |
133 | const struct dc_sink *dc_sink) | 133 | struct dc_sink *sink) |
134 | { | 134 | { |
135 | struct core_sink *sink = DC_SINK_TO_CORE(dc_sink); | ||
136 | struct stream *stream; | 135 | struct stream *stream; |
137 | 136 | ||
138 | if (sink == NULL) | 137 | if (sink == NULL) |
@@ -143,7 +142,7 @@ struct dc_stream *dc_create_stream_for_sink( | |||
143 | if (NULL == stream) | 142 | if (NULL == stream) |
144 | goto alloc_fail; | 143 | goto alloc_fail; |
145 | 144 | ||
146 | if (false == construct(&stream->protected, dc_sink)) | 145 | if (false == construct(&stream->protected, sink)) |
147 | goto construct_fail; | 146 | goto construct_fail; |
148 | 147 | ||
149 | stream->ref_count++; | 148 | stream->ref_count++; |
@@ -350,8 +349,8 @@ void dc_stream_log( | |||
350 | dm_logger_write(dm_logger, | 349 | dm_logger_write(dm_logger, |
351 | log_type, | 350 | log_type, |
352 | "\tsink name: %s, serial: %d\n", | 351 | "\tsink name: %s, serial: %d\n", |
353 | core_stream->sink->public.edid_caps.display_name, | 352 | core_stream->sink->edid_caps.display_name, |
354 | core_stream->sink->public.edid_caps.serial_number); | 353 | core_stream->sink->edid_caps.serial_number); |
355 | dm_logger_write(dm_logger, | 354 | dm_logger_write(dm_logger, |
356 | log_type, | 355 | log_type, |
357 | "\tlink: %d\n", | 356 | "\tlink: %d\n", |
diff --git a/drivers/gpu/drm/amd/display/dc/dc.h b/drivers/gpu/drm/amd/display/dc/dc.h index e15e8fb1eefe..77bd54659a8b 100644 --- a/drivers/gpu/drm/amd/display/dc/dc.h +++ b/drivers/gpu/drm/amd/display/dc/dc.h | |||
@@ -629,7 +629,7 @@ bool dc_enable_stereo( | |||
629 | /** | 629 | /** |
630 | * Create a new default stream for the requested sink | 630 | * Create a new default stream for the requested sink |
631 | */ | 631 | */ |
632 | struct dc_stream *dc_create_stream_for_sink(const struct dc_sink *dc_sink); | 632 | struct dc_stream *dc_create_stream_for_sink(struct dc_sink *dc_sink); |
633 | 633 | ||
634 | void dc_stream_retain(const struct dc_stream *dc_stream); | 634 | void dc_stream_retain(const struct dc_stream *dc_stream); |
635 | void dc_stream_release(const struct dc_stream *dc_stream); | 635 | void dc_stream_release(const struct dc_stream *dc_stream); |
@@ -712,9 +712,9 @@ struct link_mst_stream_allocation_table { | |||
712 | * The currently active signal type (HDMI, DP-SST, DP-MST) is also reported. | 712 | * The currently active signal type (HDMI, DP-SST, DP-MST) is also reported. |
713 | */ | 713 | */ |
714 | struct dc_link { | 714 | struct dc_link { |
715 | const struct dc_sink *remote_sinks[MAX_SINKS_PER_LINK]; | 715 | struct dc_sink *remote_sinks[MAX_SINKS_PER_LINK]; |
716 | unsigned int sink_count; | 716 | unsigned int sink_count; |
717 | const struct dc_sink *local_sink; | 717 | struct dc_sink *local_sink; |
718 | unsigned int link_index; | 718 | unsigned int link_index; |
719 | enum dc_connection_type type; | 719 | enum dc_connection_type type; |
720 | enum signal_type connector_signal; | 720 | enum signal_type connector_signal; |
@@ -825,7 +825,7 @@ struct dc_sink *dc_link_add_remote_sink( | |||
825 | 825 | ||
826 | void dc_link_remove_remote_sink( | 826 | void dc_link_remove_remote_sink( |
827 | struct dc_link *link, | 827 | struct dc_link *link, |
828 | const struct dc_sink *sink); | 828 | struct dc_sink *sink); |
829 | 829 | ||
830 | /* Used by diagnostics for virtual link at the moment */ | 830 | /* Used by diagnostics for virtual link at the moment */ |
831 | void dc_link_set_sink(struct dc_link *link, struct dc_sink *sink); | 831 | void dc_link_set_sink(struct dc_link *link, struct dc_sink *sink); |
@@ -879,10 +879,17 @@ struct dc_sink { | |||
879 | void *priv; | 879 | void *priv; |
880 | struct stereo_3d_features features_3d[TIMING_3D_FORMAT_MAX]; | 880 | struct stereo_3d_features features_3d[TIMING_3D_FORMAT_MAX]; |
881 | bool converter_disable_audio; | 881 | bool converter_disable_audio; |
882 | |||
883 | /* private to DC core */ | ||
884 | struct dc_link *link; | ||
885 | struct dc_context *ctx; | ||
886 | |||
887 | /* private to dc_sink.c */ | ||
888 | int ref_count; | ||
882 | }; | 889 | }; |
883 | 890 | ||
884 | void dc_sink_retain(const struct dc_sink *sink); | 891 | void dc_sink_retain(struct dc_sink *sink); |
885 | void dc_sink_release(const struct dc_sink *sink); | 892 | void dc_sink_release(struct dc_sink *sink); |
886 | 893 | ||
887 | const struct audio **dc_get_audios(struct dc *dc); | 894 | const struct audio **dc_get_audios(struct dc *dc); |
888 | 895 | ||
diff --git a/drivers/gpu/drm/amd/display/dc/dce110/dce110_hw_sequencer.c b/drivers/gpu/drm/amd/display/dc/dce110/dce110_hw_sequencer.c index fe8084e290a3..58701fdb7c94 100644 --- a/drivers/gpu/drm/amd/display/dc/dce110/dce110_hw_sequencer.c +++ b/drivers/gpu/drm/amd/display/dc/dce110/dce110_hw_sequencer.c | |||
@@ -657,7 +657,7 @@ static enum dc_status bios_parser_crtc_source_select( | |||
657 | * encoder block | 657 | * encoder block |
658 | * note: video bios clears all FMT setting here. */ | 658 | * note: video bios clears all FMT setting here. */ |
659 | struct bp_crtc_source_select crtc_source_select = {0}; | 659 | struct bp_crtc_source_select crtc_source_select = {0}; |
660 | const struct core_sink *sink = pipe_ctx->stream->sink; | 660 | const struct dc_sink *sink = pipe_ctx->stream->sink; |
661 | 661 | ||
662 | crtc_source_select.engine_id = pipe_ctx->stream_enc->id; | 662 | crtc_source_select.engine_id = pipe_ctx->stream_enc->id; |
663 | crtc_source_select.controller_id = pipe_ctx->pipe_idx + 1; | 663 | crtc_source_select.controller_id = pipe_ctx->pipe_idx + 1; |
diff --git a/drivers/gpu/drm/amd/display/dc/inc/core_types.h b/drivers/gpu/drm/amd/display/dc/inc/core_types.h index eed31a827a90..1d733c837854 100644 --- a/drivers/gpu/drm/amd/display/dc/inc/core_types.h +++ b/drivers/gpu/drm/amd/display/dc/inc/core_types.h | |||
@@ -68,7 +68,7 @@ struct core_stream { | |||
68 | 68 | ||
69 | /* field internal to DC */ | 69 | /* field internal to DC */ |
70 | struct dc_context *ctx; | 70 | struct dc_context *ctx; |
71 | const struct core_sink *sink; | 71 | struct dc_sink *sink; |
72 | 72 | ||
73 | /* used by DCP and FMT */ | 73 | /* used by DCP and FMT */ |
74 | struct bit_depth_reduction_params bit_depth_params; | 74 | struct bit_depth_reduction_params bit_depth_params; |
@@ -80,25 +80,6 @@ struct core_stream { | |||
80 | struct dc_stream_status status; | 80 | struct dc_stream_status status; |
81 | }; | 81 | }; |
82 | 82 | ||
83 | /************ core_sink *****************/ | ||
84 | |||
85 | #define DC_SINK_TO_CORE(dc_sink) \ | ||
86 | container_of(dc_sink, struct core_sink, public) | ||
87 | |||
88 | struct core_sink { | ||
89 | /** The public, read-only (for DM) area of sink. **/ | ||
90 | struct dc_sink public; | ||
91 | /** End-of-public area. **/ | ||
92 | |||
93 | /** The 'protected' area - read/write access, for use only inside DC **/ | ||
94 | /* not used for now */ | ||
95 | struct dc_link *link; | ||
96 | struct dc_context *ctx; | ||
97 | |||
98 | /* private to dc_sink.c */ | ||
99 | int ref_count; | ||
100 | }; | ||
101 | |||
102 | /************ link *****************/ | 83 | /************ link *****************/ |
103 | struct link_init_data { | 84 | struct link_init_data { |
104 | const struct core_dc *dc; | 85 | const struct core_dc *dc; |