···18631863 return PTR_ERR(adsp2_alg);1864186418651865 for (i = 0; i < n_algs; i++) {18661866- cs_dsp_info(dsp,18671867- "%d: ID %x v%d.%d.%d XM@%x YM@%x ZM@%x\n",18681868- i, be32_to_cpu(adsp2_alg[i].alg.id),18691869- (be32_to_cpu(adsp2_alg[i].alg.ver) & 0xff0000) >> 16,18701870- (be32_to_cpu(adsp2_alg[i].alg.ver) & 0xff00) >> 8,18711871- be32_to_cpu(adsp2_alg[i].alg.ver) & 0xff,18721872- be32_to_cpu(adsp2_alg[i].xm),18731873- be32_to_cpu(adsp2_alg[i].ym),18741874- be32_to_cpu(adsp2_alg[i].zm));18661866+ cs_dsp_dbg(dsp,18671867+ "%d: ID %x v%d.%d.%d XM@%x YM@%x ZM@%x\n",18681868+ i, be32_to_cpu(adsp2_alg[i].alg.id),18691869+ (be32_to_cpu(adsp2_alg[i].alg.ver) & 0xff0000) >> 16,18701870+ (be32_to_cpu(adsp2_alg[i].alg.ver) & 0xff00) >> 8,18711871+ be32_to_cpu(adsp2_alg[i].alg.ver) & 0xff,18721872+ be32_to_cpu(adsp2_alg[i].xm),18731873+ be32_to_cpu(adsp2_alg[i].ym),18741874+ be32_to_cpu(adsp2_alg[i].zm));1875187518761876 alg_region = cs_dsp_create_region(dsp, WMFW_ADSP2_XM,18771877 adsp2_alg[i].alg.id,···19961996 return PTR_ERR(halo_alg);1997199719981998 for (i = 0; i < n_algs; i++) {19991999- cs_dsp_info(dsp,20002000- "%d: ID %x v%d.%d.%d XM@%x YM@%x\n",20012001- i, be32_to_cpu(halo_alg[i].alg.id),20022002- (be32_to_cpu(halo_alg[i].alg.ver) & 0xff0000) >> 16,20032003- (be32_to_cpu(halo_alg[i].alg.ver) & 0xff00) >> 8,20042004- be32_to_cpu(halo_alg[i].alg.ver) & 0xff,20052005- be32_to_cpu(halo_alg[i].xm_base),20062006- be32_to_cpu(halo_alg[i].ym_base));19991999+ cs_dsp_dbg(dsp,20002000+ "%d: ID %x v%d.%d.%d XM@%x YM@%x\n",20012001+ i, be32_to_cpu(halo_alg[i].alg.id),20022002+ (be32_to_cpu(halo_alg[i].alg.ver) & 0xff0000) >> 16,20032003+ (be32_to_cpu(halo_alg[i].alg.ver) & 0xff00) >> 8,20042004+ be32_to_cpu(halo_alg[i].alg.ver) & 0xff,20052005+ be32_to_cpu(halo_alg[i].xm_base),20062006+ be32_to_cpu(halo_alg[i].ym_base));2007200720082008 ret = cs_dsp_halo_create_regions(dsp, halo_alg[i].alg.id,20092009 halo_alg[i].alg.ver,
+2
sound/soc/codecs/aw88395/aw88395_lib.c
···452452 if ((aw_bin->all_bin_parse_num != 1) ||453453 (aw_bin->header_info[0].bin_data_type != DATA_TYPE_REGISTER)) {454454 dev_err(aw_dev->dev, "bin num or type error");455455+ ret = -EINVAL;455456 goto parse_bin_failed;456457 }457458458459 if (aw_bin->header_info[0].valid_data_len % 4) {459460 dev_err(aw_dev->dev, "bin data len get error!");461461+ ret = -EINVAL;460462 goto parse_bin_failed;461463 }462464
···344344 switch (status) {345345 case SDW_SLAVE_ATTACHED:346346 dev_dbg(cs42l42->dev, "ATTACHED\n");347347+348348+ /*349349+ * The SoundWire core can report stale ATTACH notifications350350+ * if we hard-reset CS42L42 in probe() but it had already been351351+ * enumerated. Reject the ATTACH if we haven't yet seen an352352+ * UNATTACH report for the device being in reset.353353+ */354354+ if (cs42l42->sdw_waiting_first_unattach)355355+ break;356356+347357 /*348358 * Initialise codec, this only needs to be done once.349359 * When resuming from suspend, resume callback will handle re-init of codec,···364354 break;365355 case SDW_SLAVE_UNATTACHED:366356 dev_dbg(cs42l42->dev, "UNATTACHED\n");357357+358358+ if (cs42l42->sdw_waiting_first_unattach) {359359+ /*360360+ * SoundWire core has seen that CS42L42 is not on361361+ * the bus so release RESET and wait for ATTACH.362362+ */363363+ cs42l42->sdw_waiting_first_unattach = false;364364+ gpiod_set_value_cansleep(cs42l42->reset_gpio, 1);365365+ }366366+367367 break;368368 default:369369 break;
+20-1
sound/soc/codecs/cs42l42.c
···2320232023212321 if (cs42l42->reset_gpio) {23222322 dev_dbg(cs42l42->dev, "Found reset GPIO\n");23232323- gpiod_set_value_cansleep(cs42l42->reset_gpio, 1);23232323+23242324+ /*23252325+ * ACPI can override the default GPIO state we requested23262326+ * so ensure that we start with RESET low.23272327+ */23282328+ gpiod_set_value_cansleep(cs42l42->reset_gpio, 0);23292329+23302330+ /* Ensure minimum reset pulse width */23312331+ usleep_range(10, 500);23322332+23332333+ /*23342334+ * On SoundWire keep the chip in reset until we get an UNATTACH23352335+ * notification from the SoundWire core. This acts as a23362336+ * synchronization point to reject stale ATTACH notifications23372337+ * if the chip was already enumerated before we reset it.23382338+ */23392339+ if (cs42l42->sdw_peripheral)23402340+ cs42l42->sdw_waiting_first_unattach = true;23412341+ else23422342+ gpiod_set_value_cansleep(cs42l42->reset_gpio, 1);23242343 }23252344 usleep_range(CS42L42_BOOT_TIME_US, CS42L42_BOOT_TIME_US * 2);23262345
···2077207720782078static int cs42l43_request_irq(struct cs42l43_codec *priv,20792079 struct irq_domain *dom, const char * const name,20802080- unsigned int irq, irq_handler_t handler)20802080+ unsigned int irq, irq_handler_t handler,20812081+ unsigned long flags)20812082{20822083 int ret;20832084···2088208720892088 dev_dbg(priv->dev, "Request IRQ %d for %s\n", ret, name);2090208920912091- ret = devm_request_threaded_irq(priv->dev, ret, NULL, handler, IRQF_ONESHOT,20922092- name, priv);20902090+ ret = devm_request_threaded_irq(priv->dev, ret, NULL, handler,20912091+ IRQF_ONESHOT | flags, name, priv);20932092 if (ret)20942093 return dev_err_probe(priv->dev, ret, "Failed to request IRQ %s\n", name);20952094···21252124 return 0;21262125 }2127212621282128- ret = cs42l43_request_irq(priv, dom, close_name, close_irq, handler);21272127+ ret = cs42l43_request_irq(priv, dom, close_name, close_irq, handler, IRQF_SHARED);21292128 if (ret)21302129 return ret;2131213021322132- return cs42l43_request_irq(priv, dom, open_name, open_irq, handler);21312131+ return cs42l43_request_irq(priv, dom, open_name, open_irq, handler, IRQF_SHARED);21332132}2134213321352134static int cs42l43_codec_probe(struct platform_device *pdev)···2179217821802179 for (i = 0; i < ARRAY_SIZE(cs42l43_irqs); i++) {21812180 ret = cs42l43_request_irq(priv, dom, cs42l43_irqs[i].name,21822182- cs42l43_irqs[i].irq, cs42l43_irqs[i].handler);21812181+ cs42l43_irqs[i].irq,21822182+ cs42l43_irqs[i].handler, 0);21832183 if (ret)21842184 goto err_pm;21852185 }
+12-17
sound/soc/codecs/rt5640.c
···24032403 struct rt5640_priv *rt5640 = data;24042404 int delay = 0;2405240524062406- if (rt5640->jd_src == RT5640_JD_SRC_HDA_HEADER) {24072407- cancel_delayed_work_sync(&rt5640->jack_work);24062406+ if (rt5640->jd_src == RT5640_JD_SRC_HDA_HEADER)24082407 delay = 100;24092409- }2410240824112409 if (rt5640->jack)24122412- queue_delayed_work(system_long_wq, &rt5640->jack_work, delay);24102410+ mod_delayed_work(system_long_wq, &rt5640->jack_work, delay);2413241124142412 return IRQ_HANDLED;24152413}···25632565 if (jack_data && jack_data->use_platform_clock)25642566 rt5640->use_platform_clock = jack_data->use_platform_clock;2565256725662566- ret = devm_request_threaded_irq(component->dev, rt5640->irq,25672567- NULL, rt5640_irq,25682568- IRQF_TRIGGER_RISING | IRQF_TRIGGER_FALLING | IRQF_ONESHOT,25692569- "rt5640", rt5640);25682568+ ret = request_irq(rt5640->irq, rt5640_irq,25692569+ IRQF_TRIGGER_RISING | IRQF_TRIGGER_FALLING | IRQF_ONESHOT,25702570+ "rt5640", rt5640);25702571 if (ret) {25712572 dev_warn(component->dev, "Failed to request IRQ %d: %d\n", rt5640->irq, ret);25722573 rt5640_disable_jack_detect(component);···2618262126192622 rt5640->jack = jack;2620262326212621- ret = devm_request_threaded_irq(component->dev, rt5640->irq,26222622- NULL, rt5640_irq, IRQF_TRIGGER_RISING | IRQF_ONESHOT,26232623- "rt5640", rt5640);26242624+ ret = request_irq(rt5640->irq, rt5640_irq,26252625+ IRQF_TRIGGER_RISING | IRQF_ONESHOT, "rt5640", rt5640);26242626 if (ret) {26252627 dev_warn(component->dev, "Failed to request IRQ %d: %d\n", rt5640->irq, ret);26262626- rt5640->irq = -ENXIO;26282628+ rt5640->jack = NULL;26272629 return;26282630 }26312631+ rt5640->irq_requested = true;2629263226302633 /* sync initial jack state */26312634 queue_delayed_work(system_long_wq, &rt5640->jack_work, 0);···27982801{27992802 struct rt5640_priv *rt5640 = snd_soc_component_get_drvdata(component);2800280328012801- if (rt5640->irq) {28042804+ if (rt5640->jack) {28022805 /* disable jack interrupts during system suspend */28032806 disable_irq(rt5640->irq);28072807+ rt5640_cancel_work(rt5640);28042808 }2805280928062806- rt5640_cancel_work(rt5640);28072810 snd_soc_component_force_bias_level(component, SND_SOC_BIAS_OFF);28082811 rt5640_reset(component);28092812 regcache_cache_only(rt5640->regmap, true);···2825282828262829 regcache_cache_only(rt5640->regmap, false);28272830 regcache_sync(rt5640->regmap);28282828-28292829- if (rt5640->irq)28302830- enable_irq(rt5640->irq);2831283128322832 if (rt5640->jack) {28332833 if (rt5640->jd_src == RT5640_JD_SRC_HDA_HEADER) {···28532859 }28542860 }2855286128622862+ enable_irq(rt5640->irq);28562863 queue_delayed_work(system_long_wq, &rt5640->jack_work, 0);28572864 }28582865
+11-2
sound/soc/codecs/wm_adsp.c
···687687 struct wm_coeff_ctl *ctl;688688 int ret;689689690690+ mutex_lock(&dsp->cs_dsp.pwr_lock);690691 ret = cs_dsp_coeff_write_ctrl(cs_ctl, 0, buf, len);692692+ mutex_unlock(&dsp->cs_dsp.pwr_lock);693693+691694 if (ret < 0)692695 return ret;693696···706703int wm_adsp_read_ctl(struct wm_adsp *dsp, const char *name, int type,707704 unsigned int alg, void *buf, size_t len)708705{709709- return cs_dsp_coeff_read_ctrl(cs_dsp_get_ctl(&dsp->cs_dsp, name, type, alg),710710- 0, buf, len);706706+ int ret;707707+708708+ mutex_lock(&dsp->cs_dsp.pwr_lock);709709+ ret = cs_dsp_coeff_read_ctrl(cs_dsp_get_ctl(&dsp->cs_dsp, name, type, alg),710710+ 0, buf, len);711711+ mutex_unlock(&dsp->cs_dsp.pwr_lock);712712+713713+ return ret;711714}712715EXPORT_SYMBOL_GPL(wm_adsp_read_ctl);713716
+8-4
sound/soc/fsl/fsl-asoc-card.c
···5252 unsigned long mclk_freq;5353 unsigned long free_freq;5454 u32 mclk_id;5555- u32 fll_id;5656- u32 pll_id;5555+ int fll_id;5656+ int pll_id;5757};58585959/**···206206 }207207208208 /* Specific configuration for PLL */209209- if (codec_priv->pll_id && codec_priv->fll_id) {209209+ if (codec_priv->pll_id >= 0 && codec_priv->fll_id >= 0) {210210 if (priv->sample_format == SNDRV_PCM_FORMAT_S24_LE)211211 pll_out = priv->sample_rate * 384;212212 else···248248249249 priv->streams &= ~BIT(substream->stream);250250251251- if (!priv->streams && codec_priv->pll_id && codec_priv->fll_id) {251251+ if (!priv->streams && codec_priv->pll_id >= 0 && codec_priv->fll_id >= 0) {252252 /* Force freq to be free_freq to avoid error message in codec */253253 ret = snd_soc_dai_set_sysclk(snd_soc_rtd_to_codec(rtd, 0),254254 codec_priv->mclk_id,···621621 priv->card.dapm_routes = audio_map;622622 priv->card.num_dapm_routes = ARRAY_SIZE(audio_map);623623 priv->card.driver_name = DRIVER_NAME;624624+625625+ priv->codec_priv.fll_id = -1;626626+ priv->codec_priv.pll_id = -1;627627+624628 /* Diversify the card configurations */625629 if (of_device_is_compatible(np, "fsl,imx-audio-cs42888")) {626630 codec_dai_name = "cs42888";
+7-2
sound/soc/fsl/fsl_sai.c
···710710{711711 unsigned int ofs = sai->soc_data->reg_offset;712712 bool tx = dir == TX;713713- u32 xcsr, count = 100;713713+ u32 xcsr, count = 100, mask;714714+715715+ if (sai->soc_data->mclk_with_tere && sai->mclk_direction_output)716716+ mask = FSL_SAI_CSR_TERE;717717+ else718718+ mask = FSL_SAI_CSR_TERE | FSL_SAI_CSR_BCE;714719715720 regmap_update_bits(sai->regmap, FSL_SAI_xCSR(tx, ofs),716716- FSL_SAI_CSR_TERE | FSL_SAI_CSR_BCE, 0);721721+ mask, 0);717722718723 /* TERE will remain set till the end of current frame */719724 do {
+1-1
sound/soc/fsl/imx-audmix.c
···315315 if (IS_ERR(priv->cpu_mclk)) {316316 ret = PTR_ERR(priv->cpu_mclk);317317 dev_err(&cpu_pdev->dev, "failed to get DAI mclk1: %d\n", ret);318318- return -EINVAL;318318+ return ret;319319 }320320321321 priv->audmix_pdev = audmix_pdev;
+8
sound/soc/fsl/imx-rpmsg.c
···8989 SND_SOC_DAIFMT_NB_NF |9090 SND_SOC_DAIFMT_CBC_CFC;91919292+ /*9393+ * i.MX rpmsg sound cards work on codec slave mode. MCLK will be9494+ * disabled by CPU DAI driver in hw_free(). Some codec requires MCLK9595+ * present at power up/down sequence. So need to set ignore_pmdown_time9696+ * to power down codec immediately before MCLK is turned off.9797+ */9898+ data->dai.ignore_pmdown_time = 1;9999+92100 /* Optional codec node */93101 ret = of_parse_phandle_with_fixed_args(np, "audio-codec", 0, 0, &args);94102 if (ret) {
+2-1
sound/soc/generic/simple-card-utils.c
···310310 if (fixed_sysclk % props->mclk_fs) {311311 dev_err(rtd->dev, "fixed sysclk %u not divisible by mclk_fs %u\n",312312 fixed_sysclk, props->mclk_fs);313313- return -EINVAL;313313+ ret = -EINVAL;314314+ goto codec_err;314315 }315316 ret = snd_pcm_hw_constraint_minmax(substream->runtime, SNDRV_PCM_HW_PARAM_RATE,316317 fixed_rate, fixed_rate);
+4-2
sound/soc/generic/simple-card.c
···758758 struct snd_soc_dai_link *dai_link = priv->dai_link;759759 struct simple_dai_props *dai_props = priv->dai_props;760760761761+ ret = -EINVAL;762762+761763 cinfo = dev->platform_data;762764 if (!cinfo) {763765 dev_err(dev, "no info for asoc-simple-card\n");764764- return -EINVAL;766766+ goto err;765767 }766768767769 if (!cinfo->name ||···772770 !cinfo->platform ||773771 !cinfo->cpu_dai.name) {774772 dev_err(dev, "insufficient simple_util_info settings\n");775775- return -EINVAL;773773+ goto err;776774 }777775778776 cpus = dai_link->cpus;
···4444 * platforms which make use of the snd_dmaengine_dai_dma_data struct for their4545 * DAI DMA data. Internally the function will first call4646 * snd_hwparams_to_dma_slave_config to fill in the slave config based on the4747- * hw_params, followed by snd_dmaengine_set_config_from_dai_data to fill in the4848- * remaining fields based on the DAI DMA data.4747+ * hw_params, followed by snd_dmaengine_pcm_set_config_from_dai_data to fill in4848+ * the remaining fields based on the DAI DMA data.4949 */5050int snd_dmaengine_pcm_prepare_slave_config(struct snd_pcm_substream *substream,5151 struct snd_pcm_hw_params *params, struct dma_slave_config *slave_config)