alsa-devel.alsa-project.org archive mirror
 help / color / mirror / Atom feed
From: Cezary Rojewski <cezary.rojewski@intel.com>
To: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>
Cc: alsa-devel@alsa-project.org, tiwai@suse.de,
	gregkh@linuxfoundation.org, linux-kernel@vger.kernel.org,
	Ranjani Sridharan <ranjani.sridharan@linux.intel.com>,
	vkoul@kernel.org, broonie@kernel.org,
	srinivas.kandagatla@linaro.org, jank@cadence.com,
	slawomir.blauciak@intel.com,
	Sanyog Kale <sanyog.r.kale@intel.com>,
	Bard liao <yung-chuan.liao@linux.intel.com>,
	Rander Wang <rander.wang@linux.intel.com>
Subject: Re: [alsa-devel] [PATCH 13/14] soundwire: intel: free all resources on hw_free()
Date: Mon, 4 Nov 2019 21:08:45 +0100	[thread overview]
Message-ID: <42403ea0-e337-81b6-f11a-2a32c1473750@intel.com> (raw)
In-Reply-To: <20191023212823.608-14-pierre-louis.bossart@linux.intel.com>

On 2019-10-23 23:28, Pierre-Louis Bossart wrote:
> Make sure all calls to the SoundWire stream API are done and involve
> callback
> 
> Signed-off-by: Rander Wang <rander.wang@linux.intel.com>
> Signed-off-by: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>
> ---
>   drivers/soundwire/intel.c | 40 +++++++++++++++++++++++++++++++++++++--
>   1 file changed, 38 insertions(+), 2 deletions(-)
> 
> diff --git a/drivers/soundwire/intel.c b/drivers/soundwire/intel.c
> index af24fa048add..cad1c0b64ee3 100644
> --- a/drivers/soundwire/intel.c
> +++ b/drivers/soundwire/intel.c
> @@ -548,6 +548,25 @@ static int intel_params_stream(struct sdw_intel *sdw,
>   	return -EIO;
>   }
>   
> +static int intel_free_stream(struct sdw_intel *sdw,
> +			     struct snd_pcm_substream *substream,
> +			     struct snd_soc_dai *dai,
> +			     int link_id)
> +{
> +	struct sdw_intel_link_res *res = sdw->link_res;
> +	struct sdw_intel_stream_free_data free_data;
> +
> +	free_data.substream = substream;
> +	free_data.dai = dai;
> +	free_data.link_id = link_id;
> +
> +	if (res->ops && res->ops->free_stream && res->dev)

Can res->dev even be null?

> +		return res->ops->free_stream(res->dev,
> +					     &free_data);
> +
> +	return 0;
> +}
> +
>   /*
>    * bank switch routines
>    */
> @@ -816,6 +835,7 @@ static int
>   intel_hw_free(struct snd_pcm_substream *substream, struct snd_soc_dai *dai)
>   {
>   	struct sdw_cdns *cdns = snd_soc_dai_get_drvdata(dai);
> +	struct sdw_intel *sdw = cdns_to_intel(cdns);
>   	struct sdw_cdns_dma_data *dma;
>   	int ret;
>   
> @@ -823,12 +843,28 @@ intel_hw_free(struct snd_pcm_substream *substream, struct snd_soc_dai *dai)
>   	if (!dma)
>   		return -EIO;
>   
> +	ret = sdw_deprepare_stream(dma->stream);
> +	if (ret) {
> +		dev_err(dai->dev, "sdw_deprepare_stream: failed %d", ret);
> +		return ret;
> +	}
> +

I understand that you want to be transparent to caller with failure 
reasons via dev_err/_warn. However, sdw_deprepare_stream already dumps 
all the logs we need. The same applies for most of the other calls (and 
not just in this patch..).

Do we really need to be that verbose? Maybe just agree on caller -or- 
subject being the source for the messaging, align existing usages and 
thus preventing further duplication?

Not forcing anything, just asking for your opinion on this.

>   	ret = sdw_stream_remove_master(&cdns->bus, dma->stream);
> -	if (ret < 0)
> +	if (ret < 0) {
>   		dev_err(dai->dev, "remove master from stream %s failed: %d\n",
>   			dma->stream->name, ret);
> +		return ret;
> +	}
>   
> -	return ret;
> +	ret = intel_free_stream(sdw, substream, dai, sdw->instance);
> +	if (ret < 0) {
> +		dev_err(dai->dev, "intel_free_stream: failed %d", ret);
> +		return ret;
> +	}
> +
> +	sdw_release_stream(dma->stream);
> +
> +	return 0;
>   }

Given the structure of this function, shouldn't the generic flow be 
handled by upper layer i.e. part of sdw core?. Apart from 
intel_free_stream, the rest looks pretty generic to me and this sole 
call could easily be extracted into ops.

>   
>   static void intel_shutdown(struct snd_pcm_substream *substream,
> 
_______________________________________________
Alsa-devel mailing list
Alsa-devel@alsa-project.org
https://mailman.alsa-project.org/mailman/listinfo/alsa-devel

  reply	other threads:[~2019-11-04 20:09 UTC|newest]

Thread overview: 33+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2019-10-23 21:28 [alsa-devel] [PATCH 00/14] soundwire: intel: implement new ASoC interfaces Pierre-Louis Bossart
2019-10-23 21:28 ` [alsa-devel] [PATCH 01/14] soundwire: renames to prepare support for master drivers/devices Pierre-Louis Bossart
2019-10-23 21:28 ` [alsa-devel] [PATCH 02/14] soundwire: rename dev_to_sdw_dev macro Pierre-Louis Bossart
2019-11-03  5:28   ` Vinod Koul
2019-10-23 21:28 ` [alsa-devel] [PATCH 03/14] soundwire: rename drv_to_sdw_slave_driver macro Pierre-Louis Bossart
2019-10-23 21:28 ` [alsa-devel] [PATCH 04/14] soundwire: bus_type: rename sdw_drv_ to sdw_slave_drv Pierre-Louis Bossart
2019-11-03  5:30   ` Vinod Koul
2019-11-04 14:34     ` Pierre-Louis Bossart
2019-10-23 21:28 ` [alsa-devel] [PATCH 05/14] soundwire: intel: rename res field as link_res Pierre-Louis Bossart
2019-10-23 21:28 ` [alsa-devel] [PATCH 06/14] soundwire: add support for sdw_slave_type Pierre-Louis Bossart
2019-11-03  5:32   ` Vinod Koul
2019-11-04 14:35     ` Pierre-Louis Bossart
2019-11-04 19:33   ` Cezary Rojewski
2019-11-04 19:41     ` Pierre-Louis Bossart
2019-10-23 21:28 ` [alsa-devel] [PATCH 07/14] soundwire: add initial definitions for sdw_master_device Pierre-Louis Bossart
2019-11-03  6:30   ` Vinod Koul
2019-11-04 14:42     ` Pierre-Louis Bossart
2019-11-08  4:04       ` Vinod Koul
2019-11-08 14:41         ` Pierre-Louis Bossart
2019-10-23 21:28 ` [alsa-devel] [PATCH 08/14] soundwire: intel: remove platform devices and provide new interface Pierre-Louis Bossart
2019-10-23 21:28 ` [alsa-devel] [PATCH 09/14] soundwire: add device driver to sdw_md_driver Pierre-Louis Bossart
2019-10-23 21:28 ` [alsa-devel] [PATCH 10/14] soundwire: intel: add prepare support in sdw dai driver Pierre-Louis Bossart
2019-11-04 19:45   ` Cezary Rojewski
2019-11-04 21:31     ` Pierre-Louis Bossart
2019-11-08  4:05       ` Vinod Koul
2019-10-23 21:28 ` [alsa-devel] [PATCH 11/14] soundwire: intel: add trigger " Pierre-Louis Bossart
2019-10-23 21:28 ` [alsa-devel] [PATCH 12/14] soundwire: intel: add sdw_stream_setup helper for .startup callback Pierre-Louis Bossart
2019-10-23 21:28 ` [alsa-devel] [PATCH 13/14] soundwire: intel: free all resources on hw_free() Pierre-Louis Bossart
2019-11-04 20:08   ` Cezary Rojewski [this message]
2019-11-04 21:46     ` Pierre-Louis Bossart
2019-11-08  4:14       ` Vinod Koul
2019-11-08 14:39         ` Pierre-Louis Bossart
2019-10-23 21:28 ` [alsa-devel] [PATCH 14/14] soundwire: intel_init: add implementation of sdw_intel_enable_irq() Pierre-Louis Bossart

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=42403ea0-e337-81b6-f11a-2a32c1473750@intel.com \
    --to=cezary.rojewski@intel.com \
    --cc=alsa-devel@alsa-project.org \
    --cc=broonie@kernel.org \
    --cc=gregkh@linuxfoundation.org \
    --cc=jank@cadence.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=pierre-louis.bossart@linux.intel.com \
    --cc=rander.wang@linux.intel.com \
    --cc=ranjani.sridharan@linux.intel.com \
    --cc=sanyog.r.kale@intel.com \
    --cc=slawomir.blauciak@intel.com \
    --cc=srinivas.kandagatla@linaro.org \
    --cc=tiwai@suse.de \
    --cc=vkoul@kernel.org \
    --cc=yung-chuan.liao@linux.intel.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).