All of lore.kernel.org
 help / color / mirror / Atom feed
From: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>
To: Guennadi Liakhovetski <guennadi.liakhovetski@linux.intel.com>
Cc: alsa-devel@alsa-project.org, linux-kernel@vger.kernel.org,
	tiwai@suse.de, broonie@kernel.org, vkoul@kernel.org,
	gregkh@linuxfoundation.org, jank@cadence.com,
	srinivas.kandagatla@linaro.org, slawomir.blauciak@intel.com,
	Bard liao <yung-chuan.liao@linux.intel.com>,
	Rander Wang <rander.wang@linux.intel.com>,
	Ranjani Sridharan <ranjani.sridharan@linux.intel.com>,
	Liam Girdwood <lgirdwood@gmail.com>,
	Jaroslav Kysela <perex@perex.cz>, Takashi Iwai <tiwai@suse.com>,
	Zhu Yingjiang <yingjiang.zhu@linux.intel.com>,
	YueHaibing <yuehaibing@huawei.com>,
	Kai Vehmanen <kai.vehmanen@linux.intel.com>,
	Arnd Bergmann <arnd@arndb.de>
Subject: Re: [RFC PATCH 4/5] ASoC: SOF: Intel: hda: add SoundWire stream config/free callbacks
Date: Thu, 22 Aug 2019 08:53:06 -0500	[thread overview]
Message-ID: <f73796d6-fcfa-97c8-69ae-0a183edbbd97@linux.intel.com> (raw)
In-Reply-To: <20190822071835.GA30262@ubuntu>

Thanks for the review Guennadi

>> +static int sdw_config_stream(void *arg, void *s, void *dai,
>> +			     void *params, int link_id, int alh_stream_id)
> 
> I realise, that these function prototypes aren't being introduced by these
> patches, but just wondering whether such overly generic prototype is really
> a good idea here, whether some of those "void *" pointers could be given
> real types. The first one could be "struct device *" etc.

In this case the 'arg' parameter is actually a private 'struct 
snd_sof_dev', as shown below [1]. We probably want to keep this 
relatively opaque, this is a context that doesn't need to be exposed to 
the SoundWire code.

The dai and params are indeed cases where we could use stronger types, 
they are snd_soc_dai and hw_params respectively. I don't recall why the 
existing code is this way, Vinod and Sanyog may have the history of this.

> 
>> +{
>> +	struct snd_sof_dev *sdev = arg;
>> +	struct snd_soc_dai *d = dai;
[1]

>> +	struct sof_ipc_dai_config config;
>> +	struct sof_ipc_reply reply;
>> +	int ret;
>> +	u32 size = sizeof(config);
>> +
>> +	memset(&config, 0, size);
>> +	config.hdr.size = size;
>> +	config.hdr.cmd = SOF_IPC_GLB_DAI_MSG | SOF_IPC_DAI_CONFIG;
>> +	config.type = SOF_DAI_INTEL_ALH;
>> +	config.dai_index = (link_id << 8) | (d->id);
>> +	config.alh.stream_id = alh_stream_id;
> 
> Entirely up to you, in such cases I usually do something like
> 
> +	struct sof_ipc_dai_config config = {
> +		.type = SOF_DAI_INTEL_ALH,
> +		.hre = {
> +			.size = sizeof(config),
> +			.cmd = SOF_IPC_GLB_DAI_MSG | SOF_IPC_DAI_CONFIG,
> +			...
> 
> which then also avoids a memset(). But that's mostly a matter of personal
> preference, since this is on stack, the compiler would probably internally
> anyway translate the above initialisation to a memset() with all the
> following assignments.

I have no preference, so in this case I will go with consistency with 
existing code, which uses the suggested style for all IPCs.

> 
>> +
>> +	/* send message to DSP */
>> +	ret = sof_ipc_tx_message(sdev->ipc,
>> +				 config.hdr.cmd, &config, size, &reply,
>> +				 sizeof(reply));
>> +	if (ret < 0) {
>> +		dev_err(sdev->dev,
>> +			"error: failed to set DAI hw_params for link %d dai->id %d ALH %d\n",
> 
> Are readers really expected to understand what "dai->id" means? Wouldn't
> "DAI ID" be friendlier, although I understand you - who might not know
> what "x->y" stands for?.. ;-)

I was trying to avoid a confusion here, we have config->dai_index which 
are shared concepts between topology and firmware, and dai->id which is 
shared between topology and machine driver (which refers to the dai in 
the dai_link which has its own .id). In topology files we have the three 
indices and of course after a couple of weeks I can't recall which one 
maps to what.
I am afraid DAI ID might be confused with dai_index. If there are 
suggestions on this I am all ears, all I care about is avoiding 
ambiguity and having to ask Ranjani what index this really is :-)

  parent reply	other threads:[~2019-08-22 13:53 UTC|newest]

Thread overview: 31+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2019-08-21 20:17 [RFC PATCH 0/5] ASoC: SOF: Intel: SoundWire initial integration Pierre-Louis Bossart
2019-08-21 20:17 ` [RFC PATCH 1/5] ASoC: SOF: IPC: dai-intel: move ALH declarations in header file Pierre-Louis Bossart
2019-08-21 20:17 ` [RFC PATCH 2/5] ASoC: SOF: Intel: hda: add helper to initialize SoundWire IP Pierre-Louis Bossart
2019-08-21 20:17   ` Pierre-Louis Bossart
2019-08-21 20:17 ` [RFC PATCH 3/5] ASoC: SOF: Intel: hda: add SoundWire IP support Pierre-Louis Bossart
2019-08-21 20:17   ` Pierre-Louis Bossart
2019-09-04  7:21   ` Vinod Koul
2019-09-04  7:21     ` [alsa-devel] " Vinod Koul
2019-09-04 13:25     ` Pierre-Louis Bossart
2019-09-04 13:25       ` Pierre-Louis Bossart
2019-09-04 16:51       ` Vinod Koul
2019-09-04 16:51         ` Vinod Koul
2019-09-04 17:47         ` Pierre-Louis Bossart
2019-09-04 17:47           ` Pierre-Louis Bossart
2019-08-21 20:17 ` [RFC PATCH 4/5] ASoC: SOF: Intel: hda: add SoundWire stream config/free callbacks Pierre-Louis Bossart
2019-08-22  7:18   ` Guennadi Liakhovetski
2019-08-22  7:23     ` Guennadi Liakhovetski
2019-08-22 13:53     ` Pierre-Louis Bossart [this message]
2019-08-22 15:11       ` Guennadi Liakhovetski
2019-09-04  7:35       ` Vinod Koul
2019-09-04  7:35         ` [alsa-devel] " Vinod Koul
2019-09-04 13:31         ` Pierre-Louis Bossart
2019-09-04 13:31           ` Pierre-Louis Bossart
2019-09-04 16:55           ` Vinod Koul
2019-09-04 16:55             ` Vinod Koul
2019-09-04 17:49             ` Pierre-Louis Bossart
2019-09-04 17:49               ` Pierre-Louis Bossart
2019-08-21 20:17 ` [RFC PATCH 5/5] ASoC: SOF: Intel: add support for SoundWire suspend/resume Pierre-Louis Bossart
2019-08-21 20:17   ` Pierre-Louis Bossart
2019-08-22 15:19 ` [alsa-devel] [RFC PATCH 0/5] ASoC: SOF: Intel: SoundWire initial integration Guennadi Liakhovetski
2019-08-22 16:00   ` 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=f73796d6-fcfa-97c8-69ae-0a183edbbd97@linux.intel.com \
    --to=pierre-louis.bossart@linux.intel.com \
    --cc=alsa-devel@alsa-project.org \
    --cc=arnd@arndb.de \
    --cc=broonie@kernel.org \
    --cc=gregkh@linuxfoundation.org \
    --cc=guennadi.liakhovetski@linux.intel.com \
    --cc=jank@cadence.com \
    --cc=kai.vehmanen@linux.intel.com \
    --cc=lgirdwood@gmail.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=perex@perex.cz \
    --cc=rander.wang@linux.intel.com \
    --cc=ranjani.sridharan@linux.intel.com \
    --cc=slawomir.blauciak@intel.com \
    --cc=srinivas.kandagatla@linaro.org \
    --cc=tiwai@suse.com \
    --cc=tiwai@suse.de \
    --cc=vkoul@kernel.org \
    --cc=yingjiang.zhu@linux.intel.com \
    --cc=yuehaibing@huawei.com \
    --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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.