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>
This commit is contained in:
Родитель
51c29fd213
Коммит
bc8500da3e
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
|
|
Загрузка…
Ссылка в новой задаче