1
0
Fork 0

ALSA: firewire-lib: move PCM substream constraint to AM824 layer

In IEC 61883-6, PCM frames are transferred in Multi Bit Linear Audio data
channel. The data channel transfers 16/20/24 bit PCM samples. Thus, PCM
substream has a constrain about it.

This commit moves codes related to the constraint from packet streaming
layer to AM824 data block processing layer.

Signed-off-by: Takashi Sakamoto <o-takashi@sakamocchi.jp>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
hifive-unleashed-5.1
Takashi Sakamoto 2015-09-19 11:21:57 +09:00 committed by Takashi Iwai
parent 51c29fd213
commit bc8500da3e
7 changed files with 29 additions and 9 deletions

View File

@ -52,6 +52,26 @@ int amdtp_am824_set_parameters(struct amdtp_stream *s, unsigned int rate,
}
EXPORT_SYMBOL_GPL(amdtp_am824_set_parameters);
/**
* amdtp_am824_add_pcm_hw_constraints - add hw constraints for PCM substream
* @s: the AMDTP stream for AM824 data block, must be initialized.
* @runtime: the PCM substream runtime
*
*/
int amdtp_am824_add_pcm_hw_constraints(struct amdtp_stream *s,
struct snd_pcm_runtime *runtime)
{
int err;
err = amdtp_stream_add_pcm_hw_constraints(s, runtime);
if (err < 0)
return err;
/* AM824 in IEC 61883-6 can deliver 24bit data. */
return snd_pcm_hw_constraint_msbits(runtime, 0, 32, 24);
}
EXPORT_SYMBOL_GPL(amdtp_am824_add_pcm_hw_constraints);
/**
* amdtp_am824_init - initialize an AMDTP stream structure to handle AM824
* data block

View File

@ -1,6 +1,8 @@
#ifndef SOUND_FIREWIRE_AMDTP_AM824_H_INCLUDED
#define SOUND_FIREWIRE_AMDTP_AM824_H_INCLUDED
#include <sound/pcm.h>
#include "amdtp-stream.h"
int amdtp_am824_set_parameters(struct amdtp_stream *s, unsigned int rate,
@ -8,6 +10,9 @@ int amdtp_am824_set_parameters(struct amdtp_stream *s, unsigned int rate,
unsigned int midi_ports,
bool double_pcm_frames);
int amdtp_am824_add_pcm_hw_constraints(struct amdtp_stream *s,
struct snd_pcm_runtime *runtime);
int amdtp_am824_init(struct amdtp_stream *s, struct fw_unit *unit,
enum amdtp_stream_direction dir, enum cip_flags flags);
#endif

View File

@ -140,11 +140,6 @@ int amdtp_stream_add_pcm_hw_constraints(struct amdtp_stream *s,
{
int err;
/* AM824 in IEC 61883-6 can deliver 24bit data */
err = snd_pcm_hw_constraint_msbits(runtime, 0, 32, 24);
if (err < 0)
goto end;
/*
* Currently firewire-lib processes 16 packets in one software
* interrupt callback. This equals to 2msec but actually the

View File

@ -146,7 +146,7 @@ pcm_init_hw_params(struct snd_bebob *bebob,
if (err < 0)
goto end;
err = amdtp_stream_add_pcm_hw_constraints(s, runtime);
err = amdtp_am824_add_pcm_hw_constraints(s, runtime);
end:
return err;
}

View File

@ -156,7 +156,7 @@ static int init_hw_info(struct snd_dice *dice,
if (err < 0)
goto end;
err = amdtp_stream_add_pcm_hw_constraints(stream, runtime);
err = amdtp_am824_add_pcm_hw_constraints(stream, runtime);
end:
return err;
}

View File

@ -187,7 +187,7 @@ pcm_init_hw_params(struct snd_efw *efw,
if (err < 0)
goto end;
err = amdtp_stream_add_pcm_hw_constraints(s, runtime);
err = amdtp_am824_add_pcm_hw_constraints(s, runtime);
end:
return err;
}

View File

@ -158,7 +158,7 @@ static int init_hw_params(struct snd_oxfw *oxfw,
if (err < 0)
goto end;
err = amdtp_stream_add_pcm_hw_constraints(stream, runtime);
err = amdtp_am824_add_pcm_hw_constraints(stream, runtime);
end:
return err;
}