static int snd_via82xx_resume(struct pci_dev *pci) { struct snd_card *card = pci_get_drvdata(pci); struct via82xx_modem *chip = card->private_data; int i; pci_set_power_state(pci, PCI_D0); pci_restore_state(pci); if (pci_enable_device(pci) < 0) { printk(KERN_ERR "via82xx-modem: pci_enable_device failed, " "disabling device\n"); snd_card_disconnect(card); return -EIO; } pci_set_master(pci); snd_via82xx_chip_init(chip); snd_ac97_resume(chip->ac97); for (i = 0; i < chip->num_devs; i++) snd_via82xx_channel_reset(chip, &chip->devs[i]); snd_power_change_state(card, SNDRV_CTL_POWER_D0); return 0; }
static int loopback_resume(struct device *pdev) { struct snd_card *card = dev_get_drvdata(pdev); snd_power_change_state(card, SNDRV_CTL_POWER_D0); return 0; }
int oxygen_pci_suspend(struct pci_dev *pci, pm_message_t state) { struct snd_card *card = pci_get_drvdata(pci); struct oxygen *chip = card->private_data; unsigned int i, saved_interrupt_mask; snd_power_change_state(card, SNDRV_CTL_POWER_D3hot); for (i = 0; i < PCM_COUNT; ++i) if (chip->streams[i]) snd_pcm_suspend(chip->streams[i]); if (chip->model.suspend) chip->model.suspend(chip); spin_lock_irq(&chip->reg_lock); saved_interrupt_mask = chip->interrupt_mask; chip->interrupt_mask = 0; oxygen_write16(chip, OXYGEN_DMA_STATUS, 0); oxygen_write16(chip, OXYGEN_INTERRUPT_MASK, 0); spin_unlock_irq(&chip->reg_lock); synchronize_irq(chip->irq); flush_scheduled_work(); chip->interrupt_mask = saved_interrupt_mask; pci_disable_device(pci); pci_save_state(pci); pci_set_power_state(pci, pci_choose_state(pci, state)); return 0; }
static int snd_dummy_resume(struct platform_device *pdev) { struct snd_card *card = platform_get_drvdata(pdev); snd_power_change_state(card, SNDRV_CTL_POWER_D0); return 0; }
int oxygen_pci_resume(struct pci_dev *pci) { struct snd_card *card = pci_get_drvdata(pci); struct oxygen *chip = card->private_data; unsigned int i; pci_set_power_state(pci, PCI_D0); pci_restore_state(pci); if (pci_enable_device(pci) < 0) { snd_printk(KERN_ERR "cannot reenable device"); snd_card_disconnect(card); return -EIO; } pci_set_master(pci); oxygen_write16(chip, OXYGEN_DMA_STATUS, 0); oxygen_write16(chip, OXYGEN_INTERRUPT_MASK, 0); for (i = 0; i < OXYGEN_IO_SIZE; ++i) if (is_bit_set(registers_to_restore, i)) oxygen_write8(chip, i, chip->saved_registers._8[i]); if (chip->has_ac97_0) oxygen_restore_ac97(chip, 0); if (chip->has_ac97_1) oxygen_restore_ac97(chip, 1); if (chip->model.resume) chip->model.resume(chip); oxygen_write16(chip, OXYGEN_INTERRUPT_MASK, chip->interrupt_mask); snd_power_change_state(card, SNDRV_CTL_POWER_D0); return 0; }
int snd_cs5535audio_suspend(struct pci_dev *pci, pm_message_t state) { struct snd_card *card = pci_get_drvdata(pci); struct cs5535audio *cs5535au = card->private_data; int i; snd_power_change_state(card, SNDRV_CTL_POWER_D3hot); snd_pcm_suspend_all(cs5535au->pcm); snd_ac97_suspend(cs5535au->ac97); for (i = 0; i < NUM_CS5535AUDIO_DMAS; i++) { struct cs5535audio_dma *dma = &cs5535au->dmas[i]; if (dma && dma->substream) dma->saved_prd = dma->ops->read_prd(cs5535au); } /* save important regs, then disable aclink in hw */ snd_cs5535audio_stop_hardware(cs5535au); if (pci_save_state(pci)) { printk(KERN_ERR "cs5535audio: pci_save_state failed!\n"); return -EIO; } pci_disable_device(pci); pci_set_power_state(pci, pci_choose_state(pci, state)); return 0; }
static int snd_emu10k1_suspend(struct device *dev) { struct pci_dev *pci = to_pci_dev(dev); struct snd_card *card = dev_get_drvdata(dev); struct snd_emu10k1 *emu = card->private_data; snd_power_change_state(card, SNDRV_CTL_POWER_D3hot); emu->suspend = 1; snd_pcm_suspend_all(emu->pcm); snd_pcm_suspend_all(emu->pcm_mic); snd_pcm_suspend_all(emu->pcm_efx); snd_pcm_suspend_all(emu->pcm_multi); snd_pcm_suspend_all(emu->pcm_p16v); snd_ac97_suspend(emu->ac97); snd_emu10k1_efx_suspend(emu); snd_emu10k1_suspend_regs(emu); if (emu->card_capabilities->ca0151_chip) snd_p16v_suspend(emu); snd_emu10k1_done(emu); pci_disable_device(pci); pci_save_state(pci); pci_set_power_state(pci, PCI_D3hot); return 0; }
static int snd_emu10k1_resume(struct device *dev) { struct pci_dev *pci = to_pci_dev(dev); struct snd_card *card = dev_get_drvdata(dev); struct snd_emu10k1 *emu = card->private_data; pci_set_power_state(pci, PCI_D0); pci_restore_state(pci); if (pci_enable_device(pci) < 0) { printk(KERN_ERR "emu10k1: pci_enable_device failed, " "disabling device\n"); snd_card_disconnect(card); return -EIO; } pci_set_master(pci); snd_emu10k1_resume_init(emu); snd_emu10k1_efx_resume(emu); snd_ac97_resume(emu->ac97); snd_emu10k1_resume_regs(emu); if (emu->card_capabilities->ca0151_chip) snd_p16v_resume(emu); emu->suspend = 0; snd_power_change_state(card, SNDRV_CTL_POWER_D0); return 0; }
static int nm256_resume(struct pci_dev *pci) { struct snd_card *card = pci_get_drvdata(pci); struct nm256 *chip = card->private_data; int i; /* Perform a full reset on the hardware */ pci_restore_state(pci); pci_enable_device(pci); snd_nm256_init_chip(chip); /* restore ac97 */ snd_ac97_resume(chip->ac97); for (i = 0; i < 2; i++) { struct nm256_stream *s = &chip->streams[i]; if (s->substream && s->suspended) { spin_lock_irq(&chip->reg_lock); snd_nm256_set_format(chip, s, s->substream); spin_unlock_irq(&chip->reg_lock); } } snd_power_change_state(card, SNDRV_CTL_POWER_D0); return 0; }
/* * power management */ static int snd_atiixp_suspend(struct device *dev) { struct pci_dev *pci = to_pci_dev(dev); struct snd_card *card = dev_get_drvdata(dev); struct atiixp *chip = card->private_data; int i; snd_power_change_state(card, SNDRV_CTL_POWER_D3hot); for (i = 0; i < NUM_ATI_PCMDEVS; i++) if (chip->pcmdevs[i]) { struct atiixp_dma *dma = &chip->dmas[i]; if (dma->substream && dma->running) dma->saved_curptr = readl(chip->remap_addr + dma->ops->dt_cur); snd_pcm_suspend_all(chip->pcmdevs[i]); } for (i = 0; i < NUM_ATI_CODECS; i++) snd_ac97_suspend(chip->ac97[i]); snd_atiixp_aclink_down(chip); snd_atiixp_chip_stop(chip); pci_disable_device(pci); pci_save_state(pci); pci_set_power_state(pci, PCI_D3hot); return 0; }
static int snd_atiixp_resume(struct device *dev) { struct snd_card *card = dev_get_drvdata(dev); struct atiixp *chip = card->private_data; int i; snd_atiixp_aclink_reset(chip); snd_atiixp_chip_start(chip); for (i = 0; i < NUM_ATI_CODECS; i++) snd_ac97_resume(chip->ac97[i]); for (i = 0; i < NUM_ATI_PCMDEVS; i++) if (chip->pcmdevs[i]) { struct atiixp_dma *dma = &chip->dmas[i]; if (dma->substream && dma->suspended) { dma->ops->enable_dma(chip, 1); dma->substream->ops->prepare(dma->substream); writel((u32)dma->desc_buf.addr | ATI_REG_LINKPTR_EN, chip->remap_addr + dma->ops->llp_offset); writel(dma->saved_curptr, chip->remap_addr + dma->ops->dt_cur); } } snd_power_change_state(card, SNDRV_CTL_POWER_D0); return 0; }
static int snd_ad1816a_pnp_resume(struct pnp_card_link *pcard) { struct snd_card *card = pnp_get_card_drvdata(pcard); snd_ad1816a_resume(card->private_data); snd_power_change_state(card, SNDRV_CTL_POWER_D0); return 0; }
static int snd_ad1816a_pnp_suspend(struct pnp_card_link *pcard, pm_message_t state) { struct snd_card *card = pnp_get_card_drvdata(pcard); snd_power_change_state(card, SNDRV_CTL_POWER_D3hot); snd_ad1816a_suspend(card->private_data); return 0; }
static int snd_als300_suspend(struct device *dev) { struct snd_card *card = dev_get_drvdata(dev); struct snd_als300 *chip = card->private_data; snd_power_change_state(card, SNDRV_CTL_POWER_D3hot); snd_ac97_suspend(chip->ac97); return 0; }
static int snd_es968_pnp_resume(struct pnp_card_link *pcard) { struct snd_card *card = pnp_get_card_drvdata(pcard); struct snd_es1688 *chip = card->private_data; snd_es1688_reset(chip); snd_power_change_state(card, SNDRV_CTL_POWER_D0); return 0; }
static int snd_ad1848_resume(struct device *dev, unsigned int n) { struct snd_card *card = dev_get_drvdata(dev); struct snd_ad1848 *chip = card->private_data; chip->resume(chip); snd_power_change_state(card, SNDRV_CTL_POWER_D0); return 0; }
static int snd_ad1848_suspend(struct device *dev, unsigned int n, pm_message_t state) { struct snd_card *card = dev_get_drvdata(dev); struct snd_ad1848 *chip = card->private_data; snd_power_change_state(card, SNDRV_CTL_POWER_D3hot); chip->suspend(chip); return 0; }
static int snd_sgalaxy_suspend(struct platform_device *pdev, pm_message_t state) { struct snd_card *card = platform_get_drvdata(pdev); struct snd_ad1848 *chip = card->private_data; snd_power_change_state(card, SNDRV_CTL_POWER_D3hot); chip->suspend(chip); return 0; }
static int snd_dummy_suspend(struct platform_device *pdev, pm_message_t state) { struct snd_card *card = platform_get_drvdata(pdev); struct snd_dummy *dummy = card->private_data; snd_power_change_state(card, SNDRV_CTL_POWER_D3hot); snd_pcm_suspend_all(dummy->pcm); return 0; }
static int snd_cs4231_suspend(struct platform_device *dev, pm_message_t state) { struct snd_card *card; struct snd_cs4231 *chip; card = platform_get_drvdata(dev); snd_power_change_state(card, SNDRV_CTL_POWER_D3hot); chip = card->private_data; chip->suspend(chip); return 0; }
static int snd_cs4231_resume(struct platform_device *dev) { struct snd_card *card; struct snd_cs4231 *chip; card = platform_get_drvdata(dev); chip = card->private_data; chip->resume(chip); snd_power_change_state(card, SNDRV_CTL_POWER_D0); return 0; }
static int snd_es968_pnp_suspend(struct pnp_card_link *pcard, pm_message_t state) { struct snd_card *card = pnp_get_card_drvdata(pcard); struct snd_es1688 *chip = card->private_data; snd_power_change_state(card, SNDRV_CTL_POWER_D3hot); snd_pcm_suspend_all(chip->pcm); return 0; }
/* Resume Line 6 device. */ int line6_resume(struct usb_interface *interface) { struct usb_line6 *line6 = usb_get_intfdata(interface); if (line6->properties->capabilities & LINE6_CAP_CONTROL) line6_start_listen(line6); snd_power_change_state(line6->card, SNDRV_CTL_POWER_D0); return 0; }
static int snd_als300_resume(struct device *dev) { struct snd_card *card = dev_get_drvdata(dev); struct snd_als300 *chip = card->private_data; snd_als300_init(chip); snd_ac97_resume(chip->ac97); snd_power_change_state(card, SNDRV_CTL_POWER_D0); return 0; }
static int snd_sb8_suspend(struct platform_device *dev, pm_message_t state) { struct snd_card *card = platform_get_drvdata(dev); struct snd_sb8 *acard = card->private_data; struct snd_sb *chip = acard->chip; snd_power_change_state(card, SNDRV_CTL_POWER_D3hot); snd_pcm_suspend_all(chip->pcm); snd_sbmixer_suspend(chip); return 0; }
static int snd_sb8_resume(struct platform_device *dev) { struct snd_card *card = platform_get_drvdata(dev); struct snd_sb8 *acard = card->private_data; struct snd_sb *chip = acard->chip; snd_sbdsp_reset(chip); snd_sbmixer_resume(chip); snd_power_change_state(card, SNDRV_CTL_POWER_D0); return 0; }
static int loopback_suspend(struct device *pdev) { struct snd_card *card = dev_get_drvdata(pdev); struct loopback *loopback = card->private_data; snd_power_change_state(card, SNDRV_CTL_POWER_D3hot); snd_pcm_suspend_all(loopback->pcm[0]); snd_pcm_suspend_all(loopback->pcm[1]); return 0; }
static int snd_jazz16_resume(struct device *pdev, unsigned int n) { struct snd_card *card = dev_get_drvdata(pdev); struct snd_card_jazz16 *acard = card->private_data; struct snd_sb *chip = acard->chip; snd_sbdsp_reset(chip); snd_sbmixer_resume(chip); snd_power_change_state(card, SNDRV_CTL_POWER_D0); return 0; }
static int __maybe_unused hda_tegra_resume(struct device *dev) { struct snd_card *card = dev_get_drvdata(dev); int rc; rc = pm_runtime_force_resume(dev); if (rc < 0) return rc; snd_power_change_state(card, SNDRV_CTL_POWER_D0); return 0; }
static int snd_jazz16_suspend(struct device *pdev, unsigned int n, pm_message_t state) { struct snd_card *card = dev_get_drvdata(pdev); struct snd_card_jazz16 *acard = card->private_data; struct snd_sb *chip = acard->chip; snd_power_change_state(card, SNDRV_CTL_POWER_D3hot); snd_pcm_suspend_all(chip->pcm); snd_sbmixer_suspend(chip); return 0; }