[alsa-devel] [PATCH 2/3] Add ALSA driver for Atmel Audio Bitstream DAC
Takashi Iwai
tiwai at suse.de
Wed Feb 4 13:00:42 CET 2009
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
More information about the Alsa-devel
mailing list