On 2026-07-15 11:46, Zuo, Jerry wrote:
> AMD General
> 
> It may not be necessary to identify whether it is FRL when creating the 
> queue. FRL is not determined until link detection. Whether make the queue 
> active or not is dynamically determined by whether an active FRL stream 
> presents.
> 

This checks whether the HW has any FRL capable encoders and only
creates the workqueue if it does. The workqueue is still created
regardless whether or not an FRL-capable device is plugged in.

Harry

>> -----Original Message-----
>> From: amd-gfx <[email protected]> On Behalf Of Timur
>> Kristóf
>> Sent: Saturday, July 11, 2026 07:30
>> To: [email protected]; Deucher, Alexander
>> <[email protected]>; Tvrtko Ursulin <[email protected]>;
>> Natalie Vock <[email protected]>; Melissa Wen <[email protected]>;
>> Limonciello, Mario <[email protected]>; Hung, Alex
>> <[email protected]>; Wentland, Harry <[email protected]>
>> Cc: Timur Kristóf <[email protected]>
>> Subject: [PATCH 2/2] drm/amd/display: Check HDMI FRL support before
>> creating polling workqueue
>>
>> The workqueue is not necessary when FRL is not supported or when it's
>> disabled. Add a helper to tell when the current board has any HDMI FRL
>> capable connectors and call that before creating the workqueue.
>>
>> Signed-off-by: Timur Kristóf <[email protected]>
>> ---
>>  .../gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c |  2 +-
>>  drivers/gpu/drm/amd/display/dc/core/dc.c      | 26 +++++++++++++++++++
>>  drivers/gpu/drm/amd/display/dc/dc.h           |  2 ++
>>  3 files changed, 29 insertions(+), 1 deletion(-)
>>
>> 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 6299f0e384f1..87d7b60ceb3f 100644
>> --- a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c
>> +++ b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c
>> @@ -827,7 +827,7 @@ static int amdgpu_dm_init(struct amdgpu_device
>> *adev)
>>
>>               dc_init_callbacks(adev->dm.dc, &init_params);
>>       }
>> -     if (adev->dm.dc->caps.max_links > 0) {
>> +     if (dc_is_hdmi_frl_supported(adev->dm.dc)) {
>>               adev->dm.hdmi_frl_status_polling_wq =
>>
>>       create_singlethread_workqueue("hdmi_frl_status_polling_wq");
>>               if (!adev->dm.hdmi_frl_status_polling_wq)
>> diff --git a/drivers/gpu/drm/amd/display/dc/core/dc.c
>> b/drivers/gpu/drm/amd/display/dc/core/dc.c
>> index 1b6627a92d24..1a7073abb8ba 100644
>> --- a/drivers/gpu/drm/amd/display/dc/core/dc.c
>> +++ b/drivers/gpu/drm/amd/display/dc/core/dc.c
>> @@ -6592,6 +6592,32 @@ void
>> dc_mclk_switch_using_fw_based_vblank_stretch_shut_down(struct dc *dc)
>>               dc->current_state-
>>> bw_ctx.bw.dcn.clk.fw_based_mclk_switching_shut_down = true;  }
>>
>> +/**
>> + * dc_is_hdmi_frl_supported() - Check HDMI FRL support
>> + *
>> + * @dc: [in] dc structure
>> + *
>> + * Return:
>> + * True if the current board has any HDMI FRL capable connectors,
>> + * False otherwise.
>> + */
>> +bool dc_is_hdmi_frl_supported(struct dc *dc) {
>> +     int i;
>> +
>> +     if (!dc->config.enable_frl)
>> +             return false;
>> +
>> +     for (i = 0; i < dc->link_count; ++i) {
>> +             if (dc->links[i] &&
>> +                 dc->links[i]->link_enc &&
>> +                 dc->links[i]->link_enc-
>>> features.flags.bits.IS_HDMI_FRL_CAPABLE)
>> +                     return true;
>> +     }
>> +
>> +     return false;
>> +}
>> +
>>  /**
>>   * dc_is_dmub_outbox_supported - Check if DMUB firmware support outbox
>> notification
>>   *
>> diff --git a/drivers/gpu/drm/amd/display/dc/dc.h
>> b/drivers/gpu/drm/amd/display/dc/dc.h
>> index 13c1f7cd9d7d..d27c7437ee7a 100644
>> --- a/drivers/gpu/drm/amd/display/dc/dc.h
>> +++ b/drivers/gpu/drm/amd/display/dc/dc.h
>> @@ -3056,6 +3056,8 @@ bool dc_set_ips_disable(struct dc *dc, unsigned int
>> disable_ips);  void dc_z10_restore(const struct dc *dc);  void
>> dc_z10_save_init(struct dc *dc);
>>
>> +bool dc_is_hdmi_frl_supported(struct dc *dc);
>> +
>>  bool dc_is_dmub_outbox_supported(struct dc *dc);  bool
>> dc_enable_dmub_notifications(struct dc *dc);
>>
>> --
>> 2.55.0
> 

Reply via email to