ALSA: ali5451: Embed suspend image into struct snd_ali
authorTakashi Iwai <tiwai@suse.de>
Wed, 7 Feb 2024 15:51:26 +0000 (16:51 +0100)
committerTakashi Iwai <tiwai@suse.de>
Mon, 12 Feb 2024 10:50:25 +0000 (11:50 +0100)
Instead of allocating the memory with an additional devm_kmalloc(),
just put the image into the existing struct snd_ali.  The allocation
size isn't too big, hence it works better with less allocation calls.

Signed-off-by: Takashi Iwai <tiwai@suse.de>
Link: https://lore.kernel.org/r/20240207155140.18238-16-tiwai@suse.de
Signed-off-by: Takashi Iwai <tiwai@suse.de>
sound/pci/ali5451/ali5451.c

index 2378a39abaebec573a150184cf374d61636d7f7e..9d48638a3ab403e6497bda2968f8220b24aa007e 100644 (file)
@@ -244,7 +244,7 @@ struct snd_ali {
        spinlock_t      voice_alloc;
 
 #ifdef CONFIG_PM_SLEEP
-       struct snd_ali_image *image;
+       struct snd_ali_image image;
 #endif
 };
 
@@ -1829,13 +1829,9 @@ static int ali_suspend(struct device *dev)
 {
        struct snd_card *card = dev_get_drvdata(dev);
        struct snd_ali *chip = card->private_data;
-       struct snd_ali_image *im;
+       struct snd_ali_image *im = &chip->image;
        int i, j;
 
-       im = chip->image;
-       if (!im)
-               return 0;
-
        snd_power_change_state(card, SNDRV_CTL_POWER_D3hot);
        for (i = 0; i < chip->num_of_codecs; i++)
                snd_ac97_suspend(chip->ac97[i]);
@@ -1872,13 +1868,9 @@ static int ali_resume(struct device *dev)
 {
        struct snd_card *card = dev_get_drvdata(dev);
        struct snd_ali *chip = card->private_data;
-       struct snd_ali_image *im;
+       struct snd_ali_image *im = &chip->image;
        int i, j;
 
-       im = chip->image;
-       if (!im)
-               return 0;
-
        spin_lock_irq(&chip->reg_lock);
        
        for (i = 0; i < ALI_CHANNELS; i++) {
@@ -2112,13 +2104,6 @@ static int snd_ali_create(struct snd_card *card,
                return err;
        }
 
-#ifdef CONFIG_PM_SLEEP
-       codec->image = devm_kmalloc(&pci->dev, sizeof(*codec->image),
-                                   GFP_KERNEL);
-       if (!codec->image)
-               dev_warn(card->dev, "can't allocate apm buffer\n");
-#endif
-
        snd_ali_enable_address_interrupt(codec);
        codec->hw_initialized = 1;
        return 0;