mirror of
https://github.com/torvalds/linux.git
synced 2024-12-03 09:31:26 +00:00
ASoC: sun4i-i2s: Support more channels
We've been limited to 2 channels in the driver while the controller supports from 1 to 8 channels, in both capture and playback. let's remove the hardcoded checks and numbers, and extend the range of channel numbers we can use. Signed-off-by: Maxime Ripard <maxime.ripard@bootlin.com> Link: https://lore.kernel.org/r/27d9de5cd56f3a544851b8cd8af08bf836d19637.1566242458.git-series.maxime.ripard@bootlin.com Signed-off-by: Mark Brown <broonie@kernel.org>
This commit is contained in:
parent
0083a507a7
commit
bbf9a127ab
@ -400,9 +400,6 @@ static int sun4i_i2s_set_chan_cfg(const struct sun4i_i2s *i2s,
|
||||
{
|
||||
unsigned int channels = params_channels(params);
|
||||
|
||||
if (channels != 2)
|
||||
return -EINVAL;
|
||||
|
||||
/* Map the channels for playback and capture */
|
||||
regmap_write(i2s->regmap, SUN4I_I2S_TX_CHAN_MAP_REG, 0x76543210);
|
||||
regmap_write(i2s->regmap, SUN4I_I2S_RX_CHAN_MAP_REG, 0x00003210);
|
||||
@ -423,9 +420,6 @@ static int sun8i_i2s_set_chan_cfg(const struct sun4i_i2s *i2s,
|
||||
{
|
||||
unsigned int channels = params_channels(params);
|
||||
|
||||
if (channels != 2)
|
||||
return -EINVAL;
|
||||
|
||||
/* Map the channels for playback and capture */
|
||||
regmap_write(i2s->regmap, SUN8I_I2S_TX_CHAN_MAP_REG, 0x76543210);
|
||||
regmap_write(i2s->regmap, SUN8I_I2S_RX_CHAN_MAP_REG, 0x76543210);
|
||||
@ -458,6 +452,7 @@ static int sun4i_i2s_hw_params(struct snd_pcm_substream *substream,
|
||||
struct snd_soc_dai *dai)
|
||||
{
|
||||
struct sun4i_i2s *i2s = snd_soc_dai_get_drvdata(dai);
|
||||
unsigned int channels = params_channels(params);
|
||||
int ret, sr, wss;
|
||||
u32 width;
|
||||
|
||||
@ -490,7 +485,7 @@ static int sun4i_i2s_hw_params(struct snd_pcm_substream *substream,
|
||||
regmap_field_write(i2s->field_fmt_sr, sr);
|
||||
|
||||
return sun4i_i2s_set_clk_rate(dai, params_rate(params),
|
||||
2, params_width(params));
|
||||
channels, params_width(params));
|
||||
}
|
||||
|
||||
static int sun4i_i2s_set_soc_fmt(const struct sun4i_i2s *i2s,
|
||||
@ -814,15 +809,15 @@ static struct snd_soc_dai_driver sun4i_i2s_dai = {
|
||||
.probe = sun4i_i2s_dai_probe,
|
||||
.capture = {
|
||||
.stream_name = "Capture",
|
||||
.channels_min = 2,
|
||||
.channels_max = 2,
|
||||
.channels_min = 1,
|
||||
.channels_max = 8,
|
||||
.rates = SNDRV_PCM_RATE_8000_192000,
|
||||
.formats = SNDRV_PCM_FMTBIT_S16_LE,
|
||||
},
|
||||
.playback = {
|
||||
.stream_name = "Playback",
|
||||
.channels_min = 2,
|
||||
.channels_max = 2,
|
||||
.channels_min = 1,
|
||||
.channels_max = 8,
|
||||
.rates = SNDRV_PCM_RATE_8000_192000,
|
||||
.formats = SNDRV_PCM_FMTBIT_S16_LE,
|
||||
},
|
||||
|
Loading…
Reference in New Issue
Block a user