Skip to content

Commit

Permalink
ALSA: firewire-lib: move PCM substream constraint to AM824 layer
Browse files Browse the repository at this point in the history
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>
  • Loading branch information
Takashi Sakamoto authored and Takashi Iwai committed Sep 29, 2015
1 parent 51c29fd commit bc8500d
Show file tree
Hide file tree
Showing 7 changed files with 29 additions and 9 deletions.
20 changes: 20 additions & 0 deletions sound/firewire/amdtp-am824.c
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
5 changes: 5 additions & 0 deletions sound/firewire/amdtp-am824.h
Original file line number Diff line number Diff line change
@@ -1,13 +1,18 @@
#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,
unsigned int pcm_channels,
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
5 changes: 0 additions & 5 deletions sound/firewire/amdtp-stream.c
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
2 changes: 1 addition & 1 deletion sound/firewire/bebob/bebob_pcm.c
Original file line number Diff line number Diff line change
Expand Up @@ -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;
}
Expand Down
2 changes: 1 addition & 1 deletion sound/firewire/dice/dice-pcm.c
Original file line number Diff line number Diff line change
Expand Up @@ -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;
}
Expand Down
2 changes: 1 addition & 1 deletion sound/firewire/fireworks/fireworks_pcm.c
Original file line number Diff line number Diff line change
Expand Up @@ -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;
}
Expand Down
2 changes: 1 addition & 1 deletion sound/firewire/oxfw/oxfw-pcm.c
Original file line number Diff line number Diff line change
Expand Up @@ -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;
}
Expand Down

0 comments on commit bc8500d

Please sign in to comment.