[alsa-devel] [PATCH 26/44] fireworks: Add PCM interface

Clemens Ladisch clemens at ladisch.de
Sun Apr 6 16:52:52 CEST 2014


Takashi Sakamoto wrote:
> (Apr 4 2014 17:48), Clemens Ladisch wrote:
>> Takashi Sakamoto wrote:
>>> +    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?

Yes; in the ideal case, this driver does not need to know which formats
are actually supported.

>> /*
>>  * 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.
>>  */
>
> Currently firewire-lib exports a table for SYT_INTERVAL so we can make
> better rules for this, can't we?

Yes, we could make better rules, if we wanted to.

>>> +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.

There is already a mutex for everything in start_duplex(), so the only
unprotected piece of data is this counter.


Regards,
Clemens


More information about the Alsa-devel mailing list