diff options
Diffstat (limited to 'sound/pci/cs5535audio/cs5535audio.c')
| -rw-r--r-- | sound/pci/cs5535audio/cs5535audio.c | 82 | 
1 files changed, 37 insertions, 45 deletions
diff --git a/sound/pci/cs5535audio/cs5535audio.c b/sound/pci/cs5535audio/cs5535audio.c index afb80370841..edcbbda5c48 100644 --- a/sound/pci/cs5535audio/cs5535audio.c +++ b/sound/pci/cs5535audio/cs5535audio.c @@ -26,7 +26,7 @@  #include <linux/init.h>  #include <linux/pci.h>  #include <linux/slab.h> -#include <linux/moduleparam.h> +#include <linux/module.h>  #include <asm/io.h>  #include <sound/core.h>  #include <sound/control.h> @@ -43,7 +43,7 @@ static char *ac97_quirk;  module_param(ac97_quirk, charp, 0444);  MODULE_PARM_DESC(ac97_quirk, "AC'97 board specific workarounds."); -static struct ac97_quirk ac97_quirks[] __devinitdata = { +static struct ac97_quirk ac97_quirks[] = {  #if 0 /* Not yet confirmed if all 5536 boards are HP only */  	{  		.subvendor = PCI_VENDOR_ID_AMD,  @@ -57,7 +57,7 @@ static struct ac97_quirk ac97_quirks[] __devinitdata = {  static int index[SNDRV_CARDS] = SNDRV_DEFAULT_IDX;  static char *id[SNDRV_CARDS] = SNDRV_DEFAULT_STR; -static int enable[SNDRV_CARDS] = SNDRV_DEFAULT_ENABLE_PNP; +static bool enable[SNDRV_CARDS] = SNDRV_DEFAULT_ENABLE_PNP;  module_param_array(index, int, NULL, 0444);  MODULE_PARM_DESC(index, "Index value for " DRIVER_NAME); @@ -84,7 +84,8 @@ static void wait_till_cmd_acked(struct cs5535audio *cs5535au, unsigned long time  		udelay(1);  	} while (--timeout);  	if (!timeout) -		snd_printk(KERN_ERR "Failure writing to cs5535 codec\n"); +		dev_err(cs5535au->card->dev, +			"Failure writing to cs5535 codec\n");  }  static unsigned short snd_cs5535audio_codec_read(struct cs5535audio *cs5535au, @@ -109,8 +110,9 @@ static unsigned short snd_cs5535audio_codec_read(struct cs5535audio *cs5535au,  		udelay(1);  	} while (--timeout);  	if (!timeout) -		snd_printk(KERN_ERR "Failure reading codec reg 0x%x," -					"Last value=0x%x\n", reg, val); +		dev_err(cs5535au->card->dev, +			"Failure reading codec reg 0x%x, Last value=0x%x\n", +			reg, val);  	return (unsigned short) val;  } @@ -144,7 +146,7 @@ static unsigned short snd_cs5535audio_ac97_codec_read(struct snd_ac97 *ac97,  	return snd_cs5535audio_codec_read(cs5535au, reg);  } -static int __devinit snd_cs5535audio_mixer(struct cs5535audio *cs5535au) +static int snd_cs5535audio_mixer(struct cs5535audio *cs5535au)  {  	struct snd_card *card = cs5535au->card;  	struct snd_ac97_bus *pbus; @@ -168,7 +170,7 @@ static int __devinit snd_cs5535audio_mixer(struct cs5535audio *cs5535au)  	olpc_prequirks(card, &ac97);  	if ((err = snd_ac97_mixer(pbus, &ac97, &cs5535au->ac97)) < 0) { -		snd_printk(KERN_ERR "mixer failed\n"); +		dev_err(card->dev, "mixer failed\n");  		return err;  	} @@ -176,7 +178,7 @@ static int __devinit snd_cs5535audio_mixer(struct cs5535audio *cs5535au)  	err = olpc_quirks(card, cs5535au->ac97);  	if (err < 0) { -		snd_printk(KERN_ERR "olpc quirks failed\n"); +		dev_err(card->dev, "olpc quirks failed\n");  		return err;  	} @@ -194,8 +196,9 @@ static void process_bm0_irq(struct cs5535audio *cs5535au)  		dma = cs5535au->playback_substream->runtime->private_data;  		snd_pcm_period_elapsed(cs5535au->playback_substream);  	} else { -		snd_printk(KERN_ERR "unexpected bm0 irq src, bm_stat=%x\n", -					bm_stat); +		dev_err(cs5535au->card->dev, +			"unexpected bm0 irq src, bm_stat=%x\n", +			bm_stat);  	}  } @@ -241,8 +244,9 @@ static irqreturn_t snd_cs5535audio_interrupt(int irq, void *dev_id)  				process_bm1_irq(cs5535au);  				break;  			default: -				snd_printk(KERN_ERR "Unexpected irq src: " -						"0x%x\n", acc_irq_stat); +				dev_err(cs5535au->card->dev, +					"Unexpected irq src: 0x%x\n", +					acc_irq_stat);  				break;  			}  		} @@ -253,7 +257,7 @@ static irqreturn_t snd_cs5535audio_interrupt(int irq, void *dev_id)  static int snd_cs5535audio_free(struct cs5535audio *cs5535au)  {  	synchronize_irq(cs5535au->irq); -	pci_set_power_state(cs5535au->pci, 3); +	pci_set_power_state(cs5535au->pci, PCI_D3hot);  	if (cs5535au->irq >= 0)  		free_irq(cs5535au->irq, cs5535au); @@ -270,9 +274,9 @@ static int snd_cs5535audio_dev_free(struct snd_device *device)  	return snd_cs5535audio_free(cs5535au);  } -static int __devinit snd_cs5535audio_create(struct snd_card *card, -					    struct pci_dev *pci, -					    struct cs5535audio **rcs5535au) +static int snd_cs5535audio_create(struct snd_card *card, +				  struct pci_dev *pci, +				  struct cs5535audio **rcs5535au)  {  	struct cs5535audio *cs5535au; @@ -287,7 +291,7 @@ static int __devinit snd_cs5535audio_create(struct snd_card *card,  	if (pci_set_dma_mask(pci, DMA_BIT_MASK(32)) < 0 ||  	    pci_set_consistent_dma_mask(pci, DMA_BIT_MASK(32)) < 0) { -		printk(KERN_WARNING "unable to get 32bit dma\n"); +		dev_warn(card->dev, "unable to get 32bit dma\n");  		err = -ENXIO;  		goto pcifail;  	} @@ -311,8 +315,8 @@ static int __devinit snd_cs5535audio_create(struct snd_card *card,  	cs5535au->port = pci_resource_start(pci, 0);  	if (request_irq(pci->irq, snd_cs5535audio_interrupt, -			IRQF_SHARED, "CS5535 Audio", cs5535au)) { -		snd_printk(KERN_ERR "unable to grab IRQ %d\n", pci->irq); +			IRQF_SHARED, KBUILD_MODNAME, cs5535au)) { +		dev_err(card->dev, "unable to grab IRQ %d\n", pci->irq);  		err = -EBUSY;  		goto sndfail;  	} @@ -324,8 +328,6 @@ static int __devinit snd_cs5535audio_create(struct snd_card *card,  				  cs5535au, &ops)) < 0)  		goto sndfail; -	snd_card_set_dev(card, &pci->dev); -  	*rcs5535au = cs5535au;  	return 0; @@ -338,8 +340,8 @@ pcifail:  	return err;  } -static int __devinit snd_cs5535audio_probe(struct pci_dev *pci, -					   const struct pci_device_id *pci_id) +static int snd_cs5535audio_probe(struct pci_dev *pci, +				 const struct pci_device_id *pci_id)  {  	static int dev;  	struct snd_card *card; @@ -353,7 +355,8 @@ static int __devinit snd_cs5535audio_probe(struct pci_dev *pci,  		return -ENOENT;  	} -	err = snd_card_create(index[dev], id[dev], THIS_MODULE, 0, &card); +	err = snd_card_new(&pci->dev, index[dev], id[dev], THIS_MODULE, +			   0, &card);  	if (err < 0)  		return err; @@ -387,36 +390,25 @@ probefail_out:  	return err;  } -static void __devexit snd_cs5535audio_remove(struct pci_dev *pci) +static void snd_cs5535audio_remove(struct pci_dev *pci)  {  	olpc_quirks_cleanup();  	snd_card_free(pci_get_drvdata(pci)); -	pci_set_drvdata(pci, NULL);  } -static struct pci_driver driver = { -	.name = DRIVER_NAME, +static struct pci_driver cs5535audio_driver = { +	.name = KBUILD_MODNAME,  	.id_table = snd_cs5535audio_ids,  	.probe = snd_cs5535audio_probe, -	.remove = __devexit_p(snd_cs5535audio_remove), -#ifdef CONFIG_PM -	.suspend = snd_cs5535audio_suspend, -	.resume = snd_cs5535audio_resume, +	.remove = snd_cs5535audio_remove, +#ifdef CONFIG_PM_SLEEP +	.driver = { +		.pm = &snd_cs5535audio_pm, +	},  #endif  }; -static int __init alsa_card_cs5535audio_init(void) -{ -	return pci_register_driver(&driver); -} - -static void __exit alsa_card_cs5535audio_exit(void) -{ -	pci_unregister_driver(&driver); -} - -module_init(alsa_card_cs5535audio_init) -module_exit(alsa_card_cs5535audio_exit) +module_pci_driver(cs5535audio_driver);  MODULE_AUTHOR("Jaya Kumar");  MODULE_LICENSE("GPL");  | 
