* [PATCH V4 0/3] Support more sample rate in asrc @ 2019-04-19 10:23 S.j. Wang 2019-04-19 10:23 ` [PATCH V4 1/3] ASoC: fsl_asrc: Fix the issue about unsupported rate S.j. Wang ` (2 more replies) 0 siblings, 3 replies; 8+ messages in thread From: S.j. Wang @ 2019-04-19 10:23 UTC (permalink / raw) To: timur, nicoleotsuka, Xiubo.Lee, festevam, broonie, alsa-devel Cc: linuxppc-dev, linux-kernel Support more sample rate in asrc Shengjiu Wang (3): ASoC: fsl_asrc: Fix the issue about unsupported rate ASoC: fsl_asrc: replace the process_option table with function ASoC: fsl_asrc: Unify the supported input and output rate Changes in v4 - add patch to Fix the [8kHz, 30kHz] open set issue. Changes in v3 - remove FSL_ASRC_RATES - refine fsl_asrc_sel_proc according to comments Changes in v2 - add more comments in code - add commit "Unify the supported input and output rate" sound/soc/fsl/fsl_asrc.c | 113 ++++++++++++++++++++++++++++++++--------------- 1 file changed, 77 insertions(+), 36 deletions(-) -- 1.9.1 ^ permalink raw reply [flat|nested] 8+ messages in thread
* [PATCH V4 1/3] ASoC: fsl_asrc: Fix the issue about unsupported rate 2019-04-19 10:23 [PATCH V4 0/3] Support more sample rate in asrc S.j. Wang @ 2019-04-19 10:23 ` S.j. Wang 2019-04-19 18:10 ` Nicolin Chen 2019-04-19 10:23 ` [PATCH V4 2/3] ASoC: fsl_asrc: replace the process_option table with function S.j. Wang 2019-04-19 10:23 ` [PATCH V4 3/3] ASoC: fsl_asrc: Unify the supported input and output rate S.j. Wang 2 siblings, 1 reply; 8+ messages in thread From: S.j. Wang @ 2019-04-19 10:23 UTC (permalink / raw) To: timur, nicoleotsuka, Xiubo.Lee, festevam, broonie, alsa-devel Cc: linuxppc-dev, linux-kernel When the output sample rate is [8kHz, 30kHz], the limitation of the supported ratio range is (1/24, 8). In the driver we use (8kHz, 30kHz) instead of [8kHz, 30kHz]. So this patch is to fix this issue and the potential rounding issue with divider. Fixes: fff6e03c7b65 ("ASoC: fsl_asrc: add support for 8-30kHz output sample rate") Cc: <stable@vger.kernel.org> Signed-off-by: Shengjiu Wang <shengjiu.wang@nxp.com> --- sound/soc/fsl/fsl_asrc.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/sound/soc/fsl/fsl_asrc.c b/sound/soc/fsl/fsl_asrc.c index 0b937924d2e4..5b8adc7fb117 100644 --- a/sound/soc/fsl/fsl_asrc.c +++ b/sound/soc/fsl/fsl_asrc.c @@ -282,10 +282,10 @@ static int fsl_asrc_config_pair(struct fsl_asrc_pair *pair) return -EINVAL; } - if ((outrate > 8000 && outrate < 30000) && - (outrate/inrate > 24 || inrate/outrate > 8)) { - pair_err("exceed supported ratio range [1/24, 8] for \ - inrate/outrate: %d/%d\n", inrate, outrate); + if ((outrate >= 8000 && outrate <= 30000) && + (outrate > 24 * inrate || inrate > 8 * outrate)) { + pair_err("exceed supported ratio range (1/24, 8) for inrate/outrate: %d/%d\n", + inrate, outrate); return -EINVAL; } -- 1.9.1 ^ permalink raw reply related [flat|nested] 8+ messages in thread
* Re: [PATCH V4 1/3] ASoC: fsl_asrc: Fix the issue about unsupported rate 2019-04-19 10:23 ` [PATCH V4 1/3] ASoC: fsl_asrc: Fix the issue about unsupported rate S.j. Wang @ 2019-04-19 18:10 ` Nicolin Chen 2019-04-20 7:16 ` [EXT] " S.j. Wang 0 siblings, 1 reply; 8+ messages in thread From: Nicolin Chen @ 2019-04-19 18:10 UTC (permalink / raw) To: S.j. Wang Cc: alsa-devel, timur, Xiubo.Lee, festevam, linux-kernel, broonie, linuxppc-dev On Fri, Apr 19, 2019 at 10:23:50AM +0000, S.j. Wang wrote: > When the output sample rate is [8kHz, 30kHz], the limitation > of the supported ratio range is (1/24, 8). In the driver > we use (8kHz, 30kHz) instead of [8kHz, 30kHz]. > So this patch is to fix this issue and the potential rounding > issue with divider. > > Fixes: fff6e03c7b65 ("ASoC: fsl_asrc: add support for 8-30kHz > output sample rate") > Cc: <stable@vger.kernel.org> > Signed-off-by: Shengjiu Wang <shengjiu.wang@nxp.com> > --- > sound/soc/fsl/fsl_asrc.c | 8 ++++---- > 1 file changed, 4 insertions(+), 4 deletions(-) > > diff --git a/sound/soc/fsl/fsl_asrc.c b/sound/soc/fsl/fsl_asrc.c > index 0b937924d2e4..5b8adc7fb117 100644 > --- a/sound/soc/fsl/fsl_asrc.c > +++ b/sound/soc/fsl/fsl_asrc.c > @@ -282,10 +282,10 @@ static int fsl_asrc_config_pair(struct fsl_asrc_pair *pair) > return -EINVAL; > } > > - if ((outrate > 8000 && outrate < 30000) && > - (outrate/inrate > 24 || inrate/outrate > 8)) { > - pair_err("exceed supported ratio range [1/24, 8] for \ > - inrate/outrate: %d/%d\n", inrate, outrate); > + if ((outrate >= 8000 && outrate <= 30000) && > + (outrate > 24 * inrate || inrate > 8 * outrate)) { > + pair_err("exceed supported ratio range (1/24, 8) for inrate/outrate: %d/%d\n", Using one of the conditions: if (inrate > 8 * outrate) pair_err(); This means: if (inrate <= 8 * outrate) /* Everything is fine */ So the supported ratio range is still [1/24, 8] right? Thanks ^ permalink raw reply [flat|nested] 8+ messages in thread
* RE: [EXT] Re: [PATCH V4 1/3] ASoC: fsl_asrc: Fix the issue about unsupported rate 2019-04-19 18:10 ` Nicolin Chen @ 2019-04-20 7:16 ` S.j. Wang 0 siblings, 0 replies; 8+ messages in thread From: S.j. Wang @ 2019-04-20 7:16 UTC (permalink / raw) To: Nicolin Chen Cc: alsa-devel, timur, Xiubo.Lee, festevam, linux-kernel, broonie, linuxppc-dev Hi > > > On Fri, Apr 19, 2019 at 10:23:50AM +0000, S.j. Wang wrote: > > When the output sample rate is [8kHz, 30kHz], the limitation of the > > supported ratio range is (1/24, 8). In the driver we use (8kHz, 30kHz) > > instead of [8kHz, 30kHz]. > > So this patch is to fix this issue and the potential rounding issue > > with divider. > > > > Fixes: fff6e03c7b65 ("ASoC: fsl_asrc: add support for 8-30kHz output > > sample rate") > > Cc: <stable@vger.kernel.org> > > Signed-off-by: Shengjiu Wang <shengjiu.wang@nxp.com> > > --- > > sound/soc/fsl/fsl_asrc.c | 8 ++++---- > > 1 file changed, 4 insertions(+), 4 deletions(-) > > > > diff --git a/sound/soc/fsl/fsl_asrc.c b/sound/soc/fsl/fsl_asrc.c index > > 0b937924d2e4..5b8adc7fb117 100644 > > --- a/sound/soc/fsl/fsl_asrc.c > > +++ b/sound/soc/fsl/fsl_asrc.c > > @@ -282,10 +282,10 @@ static int fsl_asrc_config_pair(struct > fsl_asrc_pair *pair) > > return -EINVAL; > > } > > > > - if ((outrate > 8000 && outrate < 30000) && > > - (outrate/inrate > 24 || inrate/outrate > 8)) { > > - pair_err("exceed supported ratio range [1/24, 8] for \ > > - inrate/outrate: %d/%d\n", inrate, outrate); > > + if ((outrate >= 8000 && outrate <= 30000) && > > + (outrate > 24 * inrate || inrate > 8 * outrate)) { > > + pair_err("exceed supported ratio range (1/24, 8) for > > + inrate/outrate: %d/%d\n", > > Using one of the conditions: > if (inrate > 8 * outrate) > pair_err(); > > This means: > if (inrate <= 8 * outrate) > /* Everything is fine */ > > So the supported ratio range is still [1/24, 8] right? > Oh, yes, should still [1/24, 8]. > Thanks ^ permalink raw reply [flat|nested] 8+ messages in thread
* [PATCH V4 2/3] ASoC: fsl_asrc: replace the process_option table with function 2019-04-19 10:23 [PATCH V4 0/3] Support more sample rate in asrc S.j. Wang 2019-04-19 10:23 ` [PATCH V4 1/3] ASoC: fsl_asrc: Fix the issue about unsupported rate S.j. Wang @ 2019-04-19 10:23 ` S.j. Wang 2019-04-19 18:22 ` Nicolin Chen 2019-04-19 10:23 ` [PATCH V4 3/3] ASoC: fsl_asrc: Unify the supported input and output rate S.j. Wang 2 siblings, 1 reply; 8+ messages in thread From: S.j. Wang @ 2019-04-19 10:23 UTC (permalink / raw) To: timur, nicoleotsuka, Xiubo.Lee, festevam, broonie, alsa-devel Cc: linuxppc-dev, linux-kernel When we want to support more sample rate, for example 12kHz/24kHz we need update the process_option table, if we want to support more sample rate next time, the table need to be updated again. which is not flexible. We got a function fsl_asrc_sel_proc to replace the table, which can give the pre-processing and post-processing options according to the sample rate. Signed-off-by: Shengjiu Wang <shengjiu.wang@nxp.com> --- sound/soc/fsl/fsl_asrc.c | 75 +++++++++++++++++++++++++++++++++++------------- 1 file changed, 55 insertions(+), 20 deletions(-) diff --git a/sound/soc/fsl/fsl_asrc.c b/sound/soc/fsl/fsl_asrc.c index 5b8adc7fb117..2c4bbc3499db 100644 --- a/sound/soc/fsl/fsl_asrc.c +++ b/sound/soc/fsl/fsl_asrc.c @@ -26,24 +26,6 @@ #define pair_dbg(fmt, ...) \ dev_dbg(&asrc_priv->pdev->dev, "Pair %c: " fmt, 'A' + index, ##__VA_ARGS__) -/* Sample rates are aligned with that defined in pcm.h file */ -static const u8 process_option[][12][2] = { - /* 8kHz 11.025kHz 16kHz 22.05kHz 32kHz 44.1kHz 48kHz 64kHz 88.2kHz 96kHz 176kHz 192kHz */ - {{0, 1}, {0, 1}, {0, 1}, {0, 0}, {0, 0}, {0, 0}, {0, 0}, {0, 0}, {0, 0}, {0, 0}, {0, 0}, {0, 0},}, /* 5512Hz */ - {{0, 1}, {0, 1}, {0, 1}, {0, 1}, {0, 0}, {0, 0}, {0, 0}, {0, 0}, {0, 0}, {0, 0}, {0, 0}, {0, 0},}, /* 8kHz */ - {{0, 2}, {0, 1}, {0, 1}, {0, 1}, {0, 0}, {0, 0}, {0, 0}, {0, 0}, {0, 0}, {0, 0}, {0, 0}, {0, 0},}, /* 11025Hz */ - {{1, 2}, {0, 2}, {0, 1}, {0, 1}, {0, 1}, {0, 1}, {0, 1}, {0, 0}, {0, 0}, {0, 0}, {0, 0}, {0, 0},}, /* 16kHz */ - {{1, 2}, {1, 2}, {0, 2}, {0, 1}, {0, 1}, {0, 1}, {0, 1}, {0, 0}, {0, 0}, {0, 0}, {0, 0}, {0, 0},}, /* 22050Hz */ - {{1, 2}, {2, 1}, {2, 1}, {0, 2}, {0, 1}, {0, 1}, {0, 1}, {0, 1}, {0, 1}, {0, 0}, {0, 0}, {0, 0},}, /* 32kHz */ - {{2, 2}, {2, 2}, {2, 1}, {2, 1}, {0, 2}, {0, 1}, {0, 1}, {0, 1}, {0, 1}, {0, 1}, {0, 0}, {0, 0},}, /* 44.1kHz */ - {{2, 2}, {2, 2}, {2, 1}, {2, 1}, {0, 2}, {0, 2}, {0, 1}, {0, 1}, {0, 1}, {0, 1}, {0, 0}, {0, 0},}, /* 48kHz */ - {{2, 2}, {2, 2}, {2, 2}, {2, 1}, {1, 2}, {0, 2}, {0, 2}, {0, 1}, {0, 1}, {0, 1}, {0, 1}, {0, 0},}, /* 64kHz */ - {{2, 2}, {2, 2}, {2, 2}, {2, 2}, {1, 2}, {1, 2}, {1, 2}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1},}, /* 88.2kHz */ - {{2, 2}, {2, 2}, {2, 2}, {2, 2}, {1, 2}, {1, 2}, {1, 2}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1},}, /* 96kHz */ - {{2, 2}, {2, 2}, {2, 2}, {2, 2}, {2, 2}, {2, 2}, {2, 2}, {2, 1}, {2, 1}, {2, 1}, {2, 1}, {2, 1},}, /* 176kHz */ - {{2, 2}, {2, 2}, {2, 2}, {2, 2}, {2, 2}, {2, 2}, {2, 2}, {2, 1}, {2, 1}, {2, 1}, {2, 1}, {2, 1},}, /* 192kHz */ -}; - /* Corresponding to process_option */ static int supported_input_rate[] = { 5512, 8000, 11025, 16000, 22050, 32000, 44100, 48000, 64000, 88200, @@ -80,6 +62,51 @@ static unsigned char *clk_map[2]; /** + * Select the pre-processing and post-processing options + * Unsupport cases: Tsout > 8.125 * Tsin, Tsout > 16.125 * Tsin + * + * inrate: input sample rate + * outrate: output sample rate + * pre_proc: return value for pre-processing option + * post_proc: return value for post-processing option + */ +static int fsl_asrc_sel_proc(int inrate, int outrate, + int *pre_proc, int *post_proc) +{ + bool post_proc_cond2; + bool post_proc_cond0; + + /* select pre_proc between [0, 2] */ + if (inrate * 8 > 33 * outrate) + *pre_proc = 2; + else if (inrate * 8 > 15 * outrate) { + if (inrate > 152000) + *pre_proc = 2; + else + *pre_proc = 1; + } else if (inrate < 76000) + *pre_proc = 0; + else if (inrate > 152000) + *pre_proc = 2; + else + *pre_proc = 1; + + /* Condition for selection of post-processing */ + post_proc_cond2 = (inrate * 15 > outrate * 16 && outrate < 56000) || + (inrate > 56000 && outrate < 56000); + post_proc_cond0 = inrate * 23 < outrate * 8; + + if (post_proc_cond2) + *post_proc = 2; + else if (post_proc_cond0) + *post_proc = 0; + else + *post_proc = 1; + + return 0; +} + +/** * Request ASRC pair * * It assigns pair by the order of A->C->B because allocation of pair B, @@ -239,8 +266,10 @@ static int fsl_asrc_config_pair(struct fsl_asrc_pair *pair) u32 inrate, outrate, indiv, outdiv; u32 clk_index[2], div[2]; int in, out, channels; + int pre_proc, post_proc; struct clk *clk; bool ideal; + int ret; if (!config) { pair_err("invalid pair config\n"); @@ -289,6 +318,12 @@ static int fsl_asrc_config_pair(struct fsl_asrc_pair *pair) return -EINVAL; } + ret = fsl_asrc_sel_proc(inrate, outrate, &pre_proc, &post_proc); + if (ret) { + pair_err("No supported pre-processing options\n"); + return ret; + } + /* Validate input and output clock sources */ clk_index[IN] = clk_map[IN][config->inclk]; clk_index[OUT] = clk_map[OUT][config->outclk]; @@ -380,8 +415,8 @@ static int fsl_asrc_config_pair(struct fsl_asrc_pair *pair) /* Apply configurations for pre- and post-processing */ regmap_update_bits(asrc_priv->regmap, REG_ASRCFG, ASRCFG_PREMODi_MASK(index) | ASRCFG_POSTMODi_MASK(index), - ASRCFG_PREMOD(index, process_option[in][out][0]) | - ASRCFG_POSTMOD(index, process_option[in][out][1])); + ASRCFG_PREMOD(index, pre_proc) | + ASRCFG_POSTMOD(index, post_proc)); return fsl_asrc_set_ideal_ratio(pair, inrate, outrate); } -- 1.9.1 ^ permalink raw reply related [flat|nested] 8+ messages in thread
* Re: [PATCH V4 2/3] ASoC: fsl_asrc: replace the process_option table with function 2019-04-19 10:23 ` [PATCH V4 2/3] ASoC: fsl_asrc: replace the process_option table with function S.j. Wang @ 2019-04-19 18:22 ` Nicolin Chen 0 siblings, 0 replies; 8+ messages in thread From: Nicolin Chen @ 2019-04-19 18:22 UTC (permalink / raw) To: S.j. Wang Cc: alsa-devel, timur, Xiubo.Lee, festevam, linux-kernel, broonie, linuxppc-dev On Fri, Apr 19, 2019 at 10:23:53AM +0000, S.j. Wang wrote: > @@ -289,6 +318,12 @@ static int fsl_asrc_config_pair(struct fsl_asrc_pair *pair) > return -EINVAL; > } > > + ret = fsl_asrc_sel_proc(inrate, outrate, &pre_proc, &post_proc); Since the function always return 0, I am thinking of treating this function as a lookup function, and then moving this call right before the register settings -- as we have already made sure that both inrate and outrate are supported. > + if (ret) { > + pair_err("No supported pre-processing options\n"); > + return ret; > + } And probably no longer need this error-out. If there's a new limitation related to this function, I believe we can add it to the rate validation section as we are doing now -- better to have rate validation code at one place. > @@ -380,8 +415,8 @@ static int fsl_asrc_config_pair(struct fsl_asrc_pair *pair) > /* Apply configurations for pre- and post-processing */ Here: - /* Apply configurations for pre- and post-processing */ + /* Select and apply configurations for pre- and post-processing */ + fsl_asrc_sel_proc(inrate, outrate, &pre_proc, &post_proc); > regmap_update_bits(asrc_priv->regmap, REG_ASRCFG, > ASRCFG_PREMODi_MASK(index) | ASRCFG_POSTMODi_MASK(index), > - ASRCFG_PREMOD(index, process_option[in][out][0]) | > - ASRCFG_POSTMOD(index, process_option[in][out][1])); > + ASRCFG_PREMOD(index, pre_proc) | > + ASRCFG_POSTMOD(index, post_proc)); ^ permalink raw reply [flat|nested] 8+ messages in thread
* [PATCH V4 3/3] ASoC: fsl_asrc: Unify the supported input and output rate 2019-04-19 10:23 [PATCH V4 0/3] Support more sample rate in asrc S.j. Wang 2019-04-19 10:23 ` [PATCH V4 1/3] ASoC: fsl_asrc: Fix the issue about unsupported rate S.j. Wang 2019-04-19 10:23 ` [PATCH V4 2/3] ASoC: fsl_asrc: replace the process_option table with function S.j. Wang @ 2019-04-19 10:23 ` S.j. Wang 2019-04-19 18:28 ` Nicolin Chen 2 siblings, 1 reply; 8+ messages in thread From: S.j. Wang @ 2019-04-19 10:23 UTC (permalink / raw) To: timur, nicoleotsuka, Xiubo.Lee, festevam, broonie, alsa-devel Cc: linuxppc-dev, linux-kernel Unify the supported input and output rate, add the 12kHz/24kHz/128kHz to the support list Signed-off-by: Shengjiu Wang <shengjiu.wang@nxp.com> --- sound/soc/fsl/fsl_asrc.c | 32 +++++++++++++++++++------------- 1 file changed, 19 insertions(+), 13 deletions(-) diff --git a/sound/soc/fsl/fsl_asrc.c b/sound/soc/fsl/fsl_asrc.c index 2c4bbc3499db..0d06e738264a 100644 --- a/sound/soc/fsl/fsl_asrc.c +++ b/sound/soc/fsl/fsl_asrc.c @@ -27,13 +27,14 @@ dev_dbg(&asrc_priv->pdev->dev, "Pair %c: " fmt, 'A' + index, ##__VA_ARGS__) /* Corresponding to process_option */ -static int supported_input_rate[] = { - 5512, 8000, 11025, 16000, 22050, 32000, 44100, 48000, 64000, 88200, - 96000, 176400, 192000, +static unsigned int supported_asrc_rate[] = { + 5512, 8000, 11025, 12000, 16000, 22050, 24000, 32000, 44100, 48000, + 64000, 88200, 96000, 128000, 176400, 192000, }; -static int supported_asrc_rate[] = { - 8000, 11025, 16000, 22050, 32000, 44100, 48000, 64000, 88200, 96000, 176400, 192000, +static struct snd_pcm_hw_constraint_list fsl_asrc_rate_constraints = { + .count = ARRAY_SIZE(supported_asrc_rate), + .list = supported_asrc_rate, }; /** @@ -293,11 +294,11 @@ static int fsl_asrc_config_pair(struct fsl_asrc_pair *pair) ideal = config->inclk == INCLK_NONE; /* Validate input and output sample rates */ - for (in = 0; in < ARRAY_SIZE(supported_input_rate); in++) - if (inrate == supported_input_rate[in]) + for (in = 0; in < ARRAY_SIZE(supported_asrc_rate); in++) + if (inrate == supported_asrc_rate[in]) break; - if (in == ARRAY_SIZE(supported_input_rate)) { + if (in == ARRAY_SIZE(supported_asrc_rate)) { pair_err("unsupported input sample rate: %dHz\n", inrate); return -EINVAL; } @@ -311,7 +312,7 @@ static int fsl_asrc_config_pair(struct fsl_asrc_pair *pair) return -EINVAL; } - if ((outrate >= 8000 && outrate <= 30000) && + if ((outrate >= 5512 && outrate <= 30000) && (outrate > 24 * inrate || inrate > 8 * outrate)) { pair_err("exceed supported ratio range (1/24, 8) for inrate/outrate: %d/%d\n", inrate, outrate); @@ -490,7 +491,9 @@ static int fsl_asrc_dai_startup(struct snd_pcm_substream *substream, snd_pcm_hw_constraint_step(substream->runtime, 0, SNDRV_PCM_HW_PARAM_CHANNELS, 2); - return 0; + + return snd_pcm_hw_constraint_list(substream->runtime, 0, + SNDRV_PCM_HW_PARAM_RATE, &fsl_asrc_rate_constraints); } static int fsl_asrc_dai_hw_params(struct snd_pcm_substream *substream, @@ -603,7 +606,6 @@ static int fsl_asrc_dai_probe(struct snd_soc_dai *dai) return 0; } -#define FSL_ASRC_RATES SNDRV_PCM_RATE_8000_192000 #define FSL_ASRC_FORMATS (SNDRV_PCM_FMTBIT_S24_LE | \ SNDRV_PCM_FMTBIT_S16_LE | \ SNDRV_PCM_FMTBIT_S20_3LE) @@ -614,14 +616,18 @@ static int fsl_asrc_dai_probe(struct snd_soc_dai *dai) .stream_name = "ASRC-Playback", .channels_min = 1, .channels_max = 10, - .rates = FSL_ASRC_RATES, + .rate_min = 5512, + .rate_max = 192000, + .rates = SNDRV_PCM_RATE_KNOT, .formats = FSL_ASRC_FORMATS, }, .capture = { .stream_name = "ASRC-Capture", .channels_min = 1, .channels_max = 10, - .rates = FSL_ASRC_RATES, + .rate_min = 5512, + .rate_max = 192000, + .rates = SNDRV_PCM_RATE_KNOT, .formats = FSL_ASRC_FORMATS, }, .ops = &fsl_asrc_dai_ops, -- 1.9.1 ^ permalink raw reply related [flat|nested] 8+ messages in thread
* Re: [PATCH V4 3/3] ASoC: fsl_asrc: Unify the supported input and output rate 2019-04-19 10:23 ` [PATCH V4 3/3] ASoC: fsl_asrc: Unify the supported input and output rate S.j. Wang @ 2019-04-19 18:28 ` Nicolin Chen 0 siblings, 0 replies; 8+ messages in thread From: Nicolin Chen @ 2019-04-19 18:28 UTC (permalink / raw) To: S.j. Wang Cc: alsa-devel, timur, Xiubo.Lee, festevam, linux-kernel, broonie, linuxppc-dev On Fri, Apr 19, 2019 at 10:23:56AM +0000, S.j. Wang wrote: > Unify the supported input and output rate, add the > 12kHz/24kHz/128kHz to the support list > > Signed-off-by: Shengjiu Wang <shengjiu.wang@nxp.com> > --- > sound/soc/fsl/fsl_asrc.c | 32 +++++++++++++++++++------------- > 1 file changed, 19 insertions(+), 13 deletions(-) > > diff --git a/sound/soc/fsl/fsl_asrc.c b/sound/soc/fsl/fsl_asrc.c > index 2c4bbc3499db..0d06e738264a 100644 > --- a/sound/soc/fsl/fsl_asrc.c > +++ b/sound/soc/fsl/fsl_asrc.c > @@ -27,13 +27,14 @@ > dev_dbg(&asrc_priv->pdev->dev, "Pair %c: " fmt, 'A' + index, ##__VA_ARGS__) > > /* Corresponding to process_option */ > -static int supported_input_rate[] = { > - 5512, 8000, 11025, 16000, 22050, 32000, 44100, 48000, 64000, 88200, > - 96000, 176400, 192000, > +static unsigned int supported_asrc_rate[] = { > + 5512, 8000, 11025, 12000, 16000, 22050, 24000, 32000, 44100, 48000, > + 64000, 88200, 96000, 128000, 176400, 192000, > }; > > -static int supported_asrc_rate[] = { > - 8000, 11025, 16000, 22050, 32000, 44100, 48000, 64000, 88200, 96000, 176400, 192000, > +static struct snd_pcm_hw_constraint_list fsl_asrc_rate_constraints = { > + .count = ARRAY_SIZE(supported_asrc_rate), > + .list = supported_asrc_rate, > }; > > /** > @@ -293,11 +294,11 @@ static int fsl_asrc_config_pair(struct fsl_asrc_pair *pair) > ideal = config->inclk == INCLK_NONE; > > /* Validate input and output sample rates */ > - for (in = 0; in < ARRAY_SIZE(supported_input_rate); in++) > - if (inrate == supported_input_rate[in]) > + for (in = 0; in < ARRAY_SIZE(supported_asrc_rate); in++) > + if (inrate == supported_asrc_rate[in]) > break; Not sure if we still need it upon having hw_constraint. Maybe m2m needs it? ^ permalink raw reply [flat|nested] 8+ messages in thread
end of thread, other threads:[~2019-04-20 7:18 UTC | newest] Thread overview: 8+ messages (download: mbox.gz / follow: Atom feed) -- links below jump to the message on this page -- 2019-04-19 10:23 [PATCH V4 0/3] Support more sample rate in asrc S.j. Wang 2019-04-19 10:23 ` [PATCH V4 1/3] ASoC: fsl_asrc: Fix the issue about unsupported rate S.j. Wang 2019-04-19 18:10 ` Nicolin Chen 2019-04-20 7:16 ` [EXT] " S.j. Wang 2019-04-19 10:23 ` [PATCH V4 2/3] ASoC: fsl_asrc: replace the process_option table with function S.j. Wang 2019-04-19 18:22 ` Nicolin Chen 2019-04-19 10:23 ` [PATCH V4 3/3] ASoC: fsl_asrc: Unify the supported input and output rate S.j. Wang 2019-04-19 18:28 ` Nicolin Chen
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for NNTP newsgroup(s).