lkml.org 
[lkml]   [2023]   [Aug]   [7]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH v3 8/9] ASoC: SOF: Intel: Move binding to display driver outside of deferred probe
    Date
    Now that we can use -EPROBE_DEFER, it's no longer required to spin off
    the snd_hdac_i915_init into a workqueue.

    Use the -EPROBE_DEFER mechanism instead, which must be returned in the
    probe function.

    Signed-off-by: Maarten Lankhorst <maarten.lankhorst@linux.intel.com>
    ---
    sound/soc/sof/core.c | 19 +++++++------------
    sound/soc/sof/intel/hda-codec.c | 2 +-
    2 files changed, 8 insertions(+), 13 deletions(-)

    diff --git a/sound/soc/sof/core.c b/sound/soc/sof/core.c
    index 30db685cc5f4..cd4d06d1800b 100644
    --- a/sound/soc/sof/core.c
    +++ b/sound/soc/sof/core.c
    @@ -188,13 +188,6 @@ static int sof_probe_continue(struct snd_sof_dev *sdev)
    struct snd_sof_pdata *plat_data = sdev->pdata;
    int ret;

    - /* probe the DSP hardware */
    - ret = snd_sof_probe(sdev);
    - if (ret < 0) {
    - dev_err(sdev->dev, "error: failed to probe DSP %d\n", ret);
    - goto probe_err;
    - }
    -
    sof_set_fw_state(sdev, SOF_FW_BOOT_PREPARE);

    /* check machine info */
    @@ -325,10 +318,6 @@ static int sof_probe_continue(struct snd_sof_dev *sdev)
    dbg_err:
    snd_sof_free_debug(sdev);
    dsp_err:
    - snd_sof_remove(sdev);
    -probe_err:
    - sof_ops_free(sdev);
    -
    /* all resources freed, update state to match */
    sof_set_fw_state(sdev, SOF_FW_BOOT_NOT_STARTED);
    sdev->first_boot = true;
    @@ -436,6 +425,12 @@ int snd_sof_device_probe(struct device *dev, struct snd_sof_pdata *plat_data)

    sof_set_fw_state(sdev, SOF_FW_BOOT_NOT_STARTED);

    + ret = snd_sof_probe(sdev);
    + if (ret) {
    + dev_err_probe(sdev->dev, ret, "failed to probe DSP\n");
    + return ret;
    + }
    +
    if (IS_ENABLED(CONFIG_SND_SOC_SOF_PROBE_WORK_QUEUE)) {
    INIT_WORK(&sdev->probe_work, sof_probe_work);
    schedule_work(&sdev->probe_work);
    @@ -485,9 +480,9 @@ int snd_sof_device_remove(struct device *dev)

    snd_sof_ipc_free(sdev);
    snd_sof_free_debug(sdev);
    - snd_sof_remove(sdev);
    }

    + snd_sof_remove(sdev);
    sof_ops_free(sdev);

    /* release firmware */
    diff --git a/sound/soc/sof/intel/hda-codec.c b/sound/soc/sof/intel/hda-codec.c
    index f1fd5b44aaac..344b61576c0e 100644
    --- a/sound/soc/sof/intel/hda-codec.c
    +++ b/sound/soc/sof/intel/hda-codec.c
    @@ -415,7 +415,7 @@ int hda_codec_i915_init(struct snd_sof_dev *sdev)
    return 0;

    /* i915 exposes a HDA codec for HDMI audio */
    - ret = snd_hdac_i915_init(bus, true);
    + ret = snd_hdac_i915_init(bus, false);
    if (ret < 0)
    return ret;

    --
    2.39.2
    \
     
     \ /
      Last update: 2023-08-07 11:03    [W:4.309 / U:0.076 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site