From: Takashi Sakamoto <o-takashi@sakamocchi.jp>
To: Clemens Ladisch <clemens@ladisch.de>
Cc: tiwai@suse.de, alsa-devel@alsa-project.org,
linux1394-devel@lists.sourceforge.net, ffado-devel@lists.sf.net
Subject: Re: [PATCH 26/44] fireworks: Add PCM interface
Date: Sun, 06 Apr 2014 21:44:53 +0900 [thread overview]
Message-ID: <53414C45.2070006@sakamocchi.jp> (raw)
In-Reply-To: <533E71C8.9030606@ladisch.de>
Hi Clemens,
(Apr 4 2014 17:48), Clemens Ladisch wrote:
> Takashi Sakamoto wrote:
>> This commit adds a functionality to capture/playback PCM samples.
>>
>> +++ b/sound/firewire/fireworks/fireworks_pcm.c
>> +static unsigned int freq_table[] = {
>
> This table is never changed; it can be made const.
OK.
>> +static int
>> +hw_rule_xxxxx(struct snd_pcm_hw_params *params,
>> + struct snd_pcm_hw_rule *rule,
>> + struct snd_efw *efw, unsigned int *channels)
>
> The channels parameters can be made const, too.
OK.
>> + if (substream->stream == SNDRV_PCM_STREAM_CAPTURE) {
>> + substream->runtime->hw.formats = SNDRV_PCM_FMTBIT_S32;
>> + } else {
>> + substream->runtime->hw.formats = AMDTP_OUT_PCM_FORMAT_BITS;
>
> The should have been a similar symbol for AMDTP capture streams.
Do you suggest to add AMDTP_IN_PCM_FORMAT_BITS?
>> + /*
>> + * AMDTP functionality in firewire-lib require periods to be aligned to
>> + * 16 bit, or 24bit inner 32bit.
>> + */
>> + err = snd_pcm_hw_constraint_step(substream->runtime, 0,
>> + SNDRV_PCM_HW_PARAM_PERIOD_BYTES, 32);
>> + if (err < 0)
>> + goto end;
>> + err = snd_pcm_hw_constraint_step(substream->runtime, 0,
>> + SNDRV_PCM_HW_PARAM_BUFFER_BYTES, 32);
>> + if (err < 0)
>> + goto end;
>
> The comment is not correct.
...
> This driver uses blocking mode, so aligning to packets makes sense.
> Replace _BYTES with _SIZE, and change the comment to something like this
> (I should have written a comment like this in dice.c in the first place):
>
> /*
> * Align the period size to SYT_INTERVAL to align the period interrupts
> * with the packet boundaries. Align the buffer size to SYT_INTERVAL to
> * avoid having a buffer boundary inside a packet.
> */
Now I realize to misunderstand these codes.
Currently firewire-lib exports a table for SYT_INTERVAL so we can make
better rules for this, can't we?
>> +static int pcm_open(struct snd_pcm_substream *substream)
>> +{
>> + ...
>> + /*
>> + * When source of clock is not internal or any PCM streams are running,
>> + * available sampling rate is limited at current sampling rate.
>> + */
>> + if ((clock_source != SND_EFW_CLOCK_SOURCE_INTERNAL) ||
>> + amdtp_stream_pcm_running(&efw->tx_stream) ||
>> + amdtp_stream_pcm_running(&efw->rx_stream)) {
>
> Opening the playback and capture streams of a single PCM device is
> protected with the same mutex, but this does not help against races with
> the MIDI callbacks.
>
> This substream management code must be protected with a mutex.
> (Also in hw_params and hw_free.)
Hm. I have no ideas for such races, except for substream counter. Can I
request you more explaination? What race state can appears between
PCM/MIDI functionalities?
For hw_params/hw_free, please see my reply to [24/44].
Thank you
Takashi Sakamoto
o-takashi@sakamocchi.jp
next prev parent reply other threads:[~2014-04-06 12:44 UTC|newest]
Thread overview: 81+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-03-21 11:09 [PATCH 00/44 v3] Enhancement of support for Firewire devices Takashi Sakamoto
2014-03-21 11:09 ` [PATCH 01/44] firewire-lib: Add macros instead of fixed value for AMDTP Takashi Sakamoto
2014-03-21 11:09 ` [PATCH 02/44] firewire-lib: Add 'direction' member to 'amdtp_stream' structure Takashi Sakamoto
2014-03-21 11:09 ` [PATCH 03/44] firewire-lib: Split some codes into functions to reuse for both streams Takashi Sakamoto
2014-03-21 11:09 ` [PATCH 04/44] firewire-lib: Add support for AMDTP in-stream and PCM capture Takashi Sakamoto
2014-03-21 11:09 ` [PATCH 05/44] firewire-lib: Add support for MIDI capture/playback Takashi Sakamoto
2014-04-02 19:29 ` Clemens Ladisch
2014-04-02 19:42 ` [FFADO-devel] " Adrian Knoth
2014-04-02 19:58 ` Clemens Ladisch
2014-04-02 20:37 ` [FFADO-devel] [alsa-devel] " Jano Svitok
2014-04-03 8:33 ` Takashi Sakamoto
2014-04-03 8:54 ` Clemens Ladisch
2014-04-03 10:08 ` Takashi Sakamoto
2014-03-21 11:09 ` [PATCH 06/44] firewire-lib: Give syt value as parameter to handle_out_packet() Takashi Sakamoto
2014-03-21 11:09 ` [PATCH 07/44] firewire-lib: Add support for duplex streams synchronization in blocking mode Takashi Sakamoto
2014-03-21 11:09 ` [PATCH 08/44] firewire-lib: Add support for channel mapping Takashi Sakamoto
2014-04-02 20:18 ` Clemens Ladisch
2014-04-03 8:37 ` Takashi Sakamoto
2014-03-21 11:09 ` [PATCH 09/44] firewire-lib: Restrict calling flush_context_completion() when context exists Takashi Sakamoto
2014-03-21 11:09 ` [PATCH 10/44] firewire-lib: Rename macros, variables and functions for CMP Takashi Sakamoto
2014-03-21 11:09 ` [PATCH 11/44] firewire-lib: Add 'direction' member to 'cmp_connection' structure Takashi Sakamoto
2014-03-21 11:09 ` [PATCH 12/44] firewire-lib: Add handling output connection by CMP Takashi Sakamoto
2014-03-21 11:09 ` [PATCH 13/44] firewire-lib: Add a new function to check others' connection Takashi Sakamoto
2014-03-21 11:09 ` [PATCH 14/44] firewire-lib: Add support for deferred transaction Takashi Sakamoto
2014-03-21 11:10 ` [PATCH 15/44] firewire-lib: Add some AV/C general commands Takashi Sakamoto
2014-03-21 11:10 ` [PATCH 16/44] fireworks: Add skelton for Fireworks based devices Takashi Sakamoto
2014-03-21 11:10 ` [PATCH 17/44] fireworks: Add transaction and some commands Takashi Sakamoto
2014-04-03 20:15 ` Clemens Ladisch
2014-04-04 4:08 ` Takashi Sakamoto
2014-03-21 11:10 ` [PATCH 18/44] fireworks: Add connection and stream management Takashi Sakamoto
2014-04-03 20:56 ` Clemens Ladisch
2014-04-04 14:22 ` Takashi Sakamoto
2014-04-04 15:05 ` [alsa-devel] " Clemens Ladisch
2014-04-06 13:20 ` Takashi Sakamoto
2014-03-21 11:10 ` [PATCH 19/44] fireworks/firewire-lib: Add a quirk for empty packet with TAG0 Takashi Sakamoto
2014-03-21 11:10 ` [PATCH 20/44] fireworks/firewire-lib: Add a quirk for the meaning of dbc Takashi Sakamoto
2014-03-21 11:10 ` [PATCH 21/44] fireworks/firewire-lib: Add a quirk for wrong dbs in tx packets Takashi Sakamoto
2014-03-21 11:10 ` [PATCH 22/44] fireworks/firewire-libs: Add a quirk for fixed interval of reported dbc Takashi Sakamoto
2014-03-21 11:10 ` [PATCH 23/44] fireworks: Add proc interface for debugging purpose Takashi Sakamoto
2014-04-03 21:16 ` [alsa-devel] " Clemens Ladisch
2014-04-04 11:16 ` Takashi Sakamoto
2014-03-21 11:10 ` [PATCH 24/44] fireworks: Add MIDI interface Takashi Sakamoto
2014-04-03 21:20 ` [alsa-devel] " Clemens Ladisch
2014-04-06 12:03 ` Takashi Sakamoto
2014-04-06 14:52 ` Clemens Ladisch
2014-04-07 12:59 ` Takashi Sakamoto
2014-03-21 11:10 ` [PATCH 25/44] fireworks/firewire-lib: Add a quirk for data blocks for MIDI in out-stream Takashi Sakamoto
2014-03-21 11:10 ` [PATCH 26/44] fireworks: Add PCM interface Takashi Sakamoto
2014-04-04 8:48 ` Clemens Ladisch
2014-04-06 12:44 ` Takashi Sakamoto [this message]
2014-04-06 14:52 ` [alsa-devel] " Clemens Ladisch
2014-04-07 7:20 ` Takashi Sakamoto
2014-03-21 11:10 ` [PATCH 27/44] fireworks: Add hwdep interface Takashi Sakamoto
2014-03-21 11:10 ` [PATCH 28/44] fireworks: Add command/response functionality into " Takashi Sakamoto
2014-04-04 9:31 ` Clemens Ladisch
2014-04-04 11:11 ` Takashi Sakamoto
2014-04-04 12:15 ` [alsa-devel] " Clemens Ladisch
2014-04-08 2:45 ` Takashi Sakamoto
2014-04-04 15:13 ` Takashi Sakamoto
2014-03-21 11:10 ` [PATCH 29/44] bebob: Add skelton for BeBoB based devices Takashi Sakamoto
2014-03-21 11:10 ` [PATCH 30/44] bebob: Add commands and connections/streams management Takashi Sakamoto
2014-03-21 11:10 ` [PATCH 31/44] bebob/firewire-lib: Add a quirk for discontinuity at bus reset Takashi Sakamoto
2014-03-21 11:10 ` [PATCH 32/44] bebob: Add proc interface for debugging purpose Takashi Sakamoto
2014-03-21 11:10 ` [PATCH 33/44] bebob: Add MIDI interface Takashi Sakamoto
2014-03-21 11:10 ` [PATCH 34/44] bebob: Add PCM interface Takashi Sakamoto
2014-03-21 11:10 ` [PATCH 35/44] bebob: Add hwdep interface Takashi Sakamoto
2014-03-21 11:10 ` [PATCH 36/44] bebob: Prepare for device specific operations Takashi Sakamoto
2014-03-21 11:10 ` [PATCH 37/44] bebob: Add support for Terratec PHASE, EWS series and Aureon Takashi Sakamoto
2014-03-21 11:10 ` [PATCH 38/44] bebob: Add support for Yamaha GO series Takashi Sakamoto
2014-03-21 11:10 ` [PATCH 39/44] bebob: Add support for Focusrite Saffire/SaffirePro series Takashi Sakamoto
2014-03-21 11:10 ` [PATCH 40/44] bebob: Add support for M-Audio usual Firewire series Takashi Sakamoto
2014-03-21 11:10 ` [PATCH 41/44] bebob: Add support for M-Audio special " Takashi Sakamoto
2014-03-21 11:10 ` [PATCH 42/44] bebob/firewire-lib: Add a quirk of wrong dbc in empty packet " Takashi Sakamoto
2014-03-23 2:16 ` Takashi Sakamoto
2014-03-24 1:41 ` [FFADO-devel] " Euan de Kock
2014-03-24 2:52 ` Takashi Sakamoto
2014-03-21 11:10 ` [PATCH 43/44] bebob: Send a cue to load firmware for M-Audio " Takashi Sakamoto
2014-03-21 11:10 ` [PATCH 44/44] firewire/bebob: Add a workaround for M-Audio special " Takashi Sakamoto
2014-04-02 11:15 ` [PATCH 00/44 v3] Enhancement of support for Firewire devices Takashi Sakamoto
2014-04-03 19:17 ` David Henningsson
2014-04-04 7:04 ` Takashi Iwai
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=53414C45.2070006@sakamocchi.jp \
--to=o-takashi@sakamocchi.jp \
--cc=alsa-devel@alsa-project.org \
--cc=clemens@ladisch.de \
--cc=ffado-devel@lists.sf.net \
--cc=linux1394-devel@lists.sourceforge.net \
--cc=tiwai@suse.de \
/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