At Wed, 4 Feb 2009 12:48:33 +0100, Hans-Christian Egtvedt wrote: > > +static int at32_abdac_hw_params(struct snd_pcm_substream *substream, > + struct snd_pcm_hw_params *hw_params) > +{ > + struct at32_abdac *dac = snd_pcm_substream_chip(substream); > + int retval; > + > + retval = snd_pcm_lib_malloc_pages(substream, > + params_buffer_bytes(hw_params)); > + if (retval) > + return retval; snd_pcm_lib_malloc_pages() returns 1 if the buffer is changed (e.g. reallocation). So, this check should be if (retval < 0). > +static int at32_abdac_trigger(struct snd_pcm_substream *substream, int cmd) > +{ > + struct at32_abdac *dac = snd_pcm_substream_chip(substream); > + int retval = -EINVAL; > + > + switch (cmd) { > + case SNDRV_PCM_TRIGGER_PAUSE_RELEASE: /* fall through */ > + case SNDRV_PCM_TRIGGER_RESUME: /* fall through */ > + case SNDRV_PCM_TRIGGER_START: > + clk_enable(dac->sample_clk); > + retval = dw_dma_cyclic_start(dac->dma.chan); > + if (retval) > + goto out; > + dac_writel(dac, CTRL, DAC_BIT(EN)); > + break; > + case SNDRV_PCM_TRIGGER_PAUSE_PUSH: /* fall through */ > + case SNDRV_PCM_TRIGGER_SUSPEND: /* fall through */ > + case SNDRV_PCM_TRIGGER_STOP: > + set_bit(DMA_STOP, &dac->flags); > + dw_dma_cyclic_stop(dac->dma.chan); > + dac_writel(dac, DATA, 0); > + dac_writel(dac, CTRL, 0); > + clk_disable(dac->sample_clk); > + break; No retval is set for these cases? > +static int __devinit at32_abdac_probe(struct platform_device *pdev) (snip) > + retval = -ENOMEM; > + card = snd_card_new(SNDRV_DEFAULT_IDX1, SNDRV_DEFAULT_STR1, > + THIS_MODULE, sizeof(struct at32_abdac)); The recent version has a newer API, snd_card_create(). This function gives the error code. Please use the new function instead. thanks, Takashi _______________________________________________ Alsa-devel mailing list Alsa-devel@xxxxxxxxxxxxxxxx http://mailman.alsa-project.org/mailman/listinfo/alsa-devel