Re: [PATCH] ASoC: SOF: Move sof_of_machine_select() to core.c from sof-of-dev.c

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]




On 04/12/2023 05:35, Chen-Yu Tsai wrote:
> This reverts commit 014fdeb0d747304111cfecf93df4407c1a0c80db.
> 
> Commit 014fdeb0d747 ("ASoC: SOF: Move sof_of_machine_select() to
> sof-of-dev.c from sof-audio.c") caused a circular dependency between
> the snd_sof and snd_sof_of modules:
> 
> 	depmod: ERROR: Cycle detected: snd_sof -> snd_sof_of -> snd_sof
> 	depmod: ERROR: Found 2 modules in dependency cycles!
> 
> Move the function back with sof_machine_select().
> 
> Fixes: 014fdeb0d747 ("ASoC: SOF: Move sof_of_machine_select() to sof-of-dev.c from sof-audio.c")
> Signed-off-by: Chen-Yu Tsai <wenst@xxxxxxxxxxxx>

Oh, I have re-done the compile test and that does not detect this (I
don't have ARM device to runtime test it), but looks valid.
I wonder if we should do this similarly to acpi machine select via ops
to cut the circular dependency?
That can be done in a followup patch.

Acked-by: Peter Ujfalusi <peter.ujfalusi@xxxxxxxxxxxxxxx>

> ---
> Not sure what the proper arrangement would be, but this gets my builds
> going again.
> 
>  sound/soc/sof/core.c       | 22 ++++++++++++++++++++++
>  sound/soc/sof/sof-of-dev.c | 23 -----------------------
>  sound/soc/sof/sof-of-dev.h |  9 ---------
>  3 files changed, 22 insertions(+), 32 deletions(-)
> 
> diff --git a/sound/soc/sof/core.c b/sound/soc/sof/core.c
> index a2afec8f5879..425b023b03b4 100644
> --- a/sound/soc/sof/core.c
> +++ b/sound/soc/sof/core.c
> @@ -144,6 +144,28 @@ void sof_set_fw_state(struct snd_sof_dev *sdev, enum sof_fw_state new_state)
>  }
>  EXPORT_SYMBOL(sof_set_fw_state);
>  
> +static struct snd_sof_of_mach *sof_of_machine_select(struct snd_sof_dev *sdev)
> +{
> +	struct snd_sof_pdata *sof_pdata = sdev->pdata;
> +	const struct sof_dev_desc *desc = sof_pdata->desc;
> +	struct snd_sof_of_mach *mach = desc->of_machines;
> +
> +	if (!mach)
> +		return NULL;
> +
> +	for (; mach->compatible; mach++) {
> +		if (of_machine_is_compatible(mach->compatible)) {
> +			sof_pdata->tplg_filename = mach->sof_tplg_filename;
> +			if (mach->fw_filename)
> +				sof_pdata->fw_filename = mach->fw_filename;
> +
> +			return mach;
> +		}
> +	}
> +
> +	return NULL;
> +}
> +
>  /* SOF Driver enumeration */
>  static int sof_machine_check(struct snd_sof_dev *sdev)
>  {
> diff --git a/sound/soc/sof/sof-of-dev.c b/sound/soc/sof/sof-of-dev.c
> index fa92da5ee9b3..b9a499e92b9a 100644
> --- a/sound/soc/sof/sof-of-dev.c
> +++ b/sound/soc/sof/sof-of-dev.c
> @@ -41,29 +41,6 @@ static void sof_of_probe_complete(struct device *dev)
>  	pm_runtime_enable(dev);
>  }
>  
> -struct snd_sof_of_mach *sof_of_machine_select(struct snd_sof_dev *sdev)
> -{
> -	struct snd_sof_pdata *sof_pdata = sdev->pdata;
> -	const struct sof_dev_desc *desc = sof_pdata->desc;
> -	struct snd_sof_of_mach *mach = desc->of_machines;
> -
> -	if (!mach)
> -		return NULL;
> -
> -	for (; mach->compatible; mach++) {
> -		if (of_machine_is_compatible(mach->compatible)) {
> -			sof_pdata->tplg_filename = mach->sof_tplg_filename;
> -			if (mach->fw_filename)
> -				sof_pdata->fw_filename = mach->fw_filename;
> -
> -			return mach;
> -		}
> -	}
> -
> -	return NULL;
> -}
> -EXPORT_SYMBOL(sof_of_machine_select);
> -
>  int sof_of_probe(struct platform_device *pdev)
>  {
>  	struct device *dev = &pdev->dev;
> diff --git a/sound/soc/sof/sof-of-dev.h b/sound/soc/sof/sof-of-dev.h
> index 547e358a37e3..b6cc70595f3b 100644
> --- a/sound/soc/sof/sof-of-dev.h
> +++ b/sound/soc/sof/sof-of-dev.h
> @@ -16,15 +16,6 @@ struct snd_sof_of_mach {
>  	const char *sof_tplg_filename;
>  };
>  
> -#if IS_ENABLED(CONFIG_SND_SOC_SOF_OF_DEV)
> -struct snd_sof_of_mach *sof_of_machine_select(struct snd_sof_dev *sdev);
> -#else
> -static inline struct snd_sof_of_mach *sof_of_machine_select(struct snd_sof_dev *sdev)
> -{
> -	return NULL;
> -}
> -#endif
> -
>  extern const struct dev_pm_ops sof_of_pm;
>  
>  int sof_of_probe(struct platform_device *pdev);

-- 
Péter




[Index of Archives]     [Pulseaudio]     [Linux Audio Users]     [ALSA Devel]     [Fedora Desktop]     [Fedora SELinux]     [Big List of Linux Books]     [Yosemite News]     [KDE Users]

  Powered by Linux