Re: [PATCH] at73c213: Remove redundant private_free routine
From: Hans-Christian Egtvedt
Date: Mon Mar 10 2008 - 05:44:21 EST
On Mon, 2008-03-10 at 16:49 +0900, Atsushi Nemoto wrote:
> On Mon, 10 Mar 2008 16:13:54 +0900 (JST), Atsushi Nemoto <anemo@xxxxxxxxxxxxx> wrote:
> > snd_pcm_lib_preallocate_free_for_all() is called from snd_pcm_free()
> > just after calling the private_free routine. So there should be no
> > need to call it in driver's private_free routine.
> ...
> > - pcm->private_data = chip;
> > - pcm->private_free = snd_at73c213_pcm_free;
> > pcm->info_flags = SNDRV_PCM_INFO_BLOCK_TRANSFER;
> > strcpy(pcm->name, "at73c213");
> > chip->pcm = pcm;
>
> Sorry, the patch was wrong. The private_data field should still be
> initialized. Revised.
>
I spun this around, and it works fine on my system (AVR32 AT32AP7000 on
STK1000).
> ------------------------------------------------------
> Subject: [PATCH] at73c213: Remove redundant private_free routine
> From: Atsushi Nemoto <anemo@xxxxxxxxxxxxx>
>
> snd_pcm_lib_preallocate_free_for_all() is called from snd_pcm_free()
> just after calling the private_free routine. So there should be no
> need to call it in driver's private_free routine.
>
Thanks for debugging the driver.
> Signed-off-by: Atsushi Nemoto <anemo@xxxxxxxxxxxxx>
Acked-by: Hans-Christian Egtvedt <hans-christian.egtvedt@xxxxxxxxx>
> ---
> diff --git a/sound/spi/at73c213.c b/sound/spi/at73c213.c
> index 89d6e9c..bf3ea43 100644
> --- a/sound/spi/at73c213.c
> +++ b/sound/spi/at73c213.c
> @@ -314,15 +314,6 @@ static struct snd_pcm_ops at73c213_playback_ops = {
> .pointer = snd_at73c213_pcm_pointer,
> };
>
> -static void snd_at73c213_pcm_free(struct snd_pcm *pcm)
> -{
> - struct snd_at73c213 *chip = snd_pcm_chip(pcm);
> - if (chip->pcm) {
> - snd_pcm_lib_preallocate_free_for_all(chip->pcm);
> - chip->pcm = NULL;
> - }
> -}
> -
> static int __devinit snd_at73c213_pcm_new(struct snd_at73c213 *chip, int device)
> {
> struct snd_pcm *pcm;
> @@ -334,7 +325,6 @@ static int __devinit snd_at73c213_pcm_new(struct snd_at73c213 *chip, int device)
> goto out;
>
> pcm->private_data = chip;
> - pcm->private_free = snd_at73c213_pcm_free;
> pcm->info_flags = SNDRV_PCM_INFO_BLOCK_TRANSFER;
> strcpy(pcm->name, "at73c213");
> chip->pcm = pcm;
> --
> To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
> the body of a message to majordomo@xxxxxxxxxxxxxxx
> More majordomo info at http://vger.kernel.org/majordomo-info.html
> Please read the FAQ at http://www.tux.org/lkml/
--
With kind regards,
Hans-Christian Egtvedt, Applications Engineer
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/