diff options
Diffstat (limited to 'sound/pci/intel8x0m.c')
| -rw-r--r-- | sound/pci/intel8x0m.c | 240 | 
1 files changed, 120 insertions, 120 deletions
diff --git a/sound/pci/intel8x0m.c b/sound/pci/intel8x0m.c index 13cec1e5ced..b54d3e93cab 100644 --- a/sound/pci/intel8x0m.c +++ b/sound/pci/intel8x0m.c @@ -29,7 +29,7 @@  #include <linux/init.h>  #include <linux/pci.h>  #include <linux/slab.h> -#include <linux/moduleparam.h> +#include <linux/module.h>  #include <sound/core.h>  #include <sound/pcm.h>  #include <sound/ac97_codec.h> @@ -68,7 +68,7 @@ module_param(ac97_clock, int, 0444);  MODULE_PARM_DESC(ac97_clock, "AC'97 codec clock (0 = auto-detect).");  /* just for backward compatibility */ -static int enable; +static bool enable;  module_param(enable, bool, 0444);  /* @@ -235,8 +235,8 @@ static DEFINE_PCI_DEVICE_TABLE(snd_intel8x0m_ids) = {  	{ PCI_VDEVICE(NVIDIA, 0x0069), DEVICE_NFORCE }, /* NFORCE2 */  	{ PCI_VDEVICE(NVIDIA, 0x0089), DEVICE_NFORCE }, /* NFORCE2s */  	{ PCI_VDEVICE(NVIDIA, 0x00d9), DEVICE_NFORCE }, /* NFORCE3 */ +	{ PCI_VDEVICE(AMD, 0x746e), DEVICE_INTEL },	/* AMD8111 */  #if 0 -	{ PCI_VDEVICE(AMD, 0x746d), DEVICE_INTEL },	/* AMD8111 */  	{ PCI_VDEVICE(AL, 0x5455), DEVICE_ALI },   /* Ali5455 */  #endif  	{ 0, } @@ -331,31 +331,34 @@ static int snd_intel8x0m_codec_semaphore(struct intel8x0m *chip, unsigned int co  		udelay(10);  	} while (time--); -	/* access to some forbidden (non existant) ac97 registers will not +	/* access to some forbidden (non existent) ac97 registers will not  	 * reset the semaphore. So even if you don't get the semaphore, still  	 * continue the access. We don't need the semaphore anyway. */ -	snd_printk(KERN_ERR "codec_semaphore: semaphore is not ready [0x%x][0x%x]\n", +	dev_err(chip->card->dev, +		"codec_semaphore: semaphore is not ready [0x%x][0x%x]\n",  			igetbyte(chip, ICHREG(ACC_SEMA)), igetdword(chip, ICHREG(GLOB_STA)));  	iagetword(chip, 0);	/* clear semaphore flag */  	/* I don't care about the semaphore */  	return -EBUSY;  } -static void snd_intel8x0_codec_write(struct snd_ac97 *ac97, -				     unsigned short reg, -				     unsigned short val) +static void snd_intel8x0m_codec_write(struct snd_ac97 *ac97, +				      unsigned short reg, +				      unsigned short val)  {  	struct intel8x0m *chip = ac97->private_data;  	if (snd_intel8x0m_codec_semaphore(chip, ac97->num) < 0) {  		if (! chip->in_ac97_init) -			snd_printk(KERN_ERR "codec_write %d: semaphore is not ready for register 0x%x\n", ac97->num, reg); +			dev_err(chip->card->dev, +				"codec_write %d: semaphore is not ready for register 0x%x\n", +				ac97->num, reg);  	}  	iaputword(chip, reg + ac97->num * 0x80, val);  } -static unsigned short snd_intel8x0_codec_read(struct snd_ac97 *ac97, -					      unsigned short reg) +static unsigned short snd_intel8x0m_codec_read(struct snd_ac97 *ac97, +					       unsigned short reg)  {  	struct intel8x0m *chip = ac97->private_data;  	unsigned short res; @@ -363,7 +366,9 @@ static unsigned short snd_intel8x0_codec_read(struct snd_ac97 *ac97,  	if (snd_intel8x0m_codec_semaphore(chip, ac97->num) < 0) {  		if (! chip->in_ac97_init) -			snd_printk(KERN_ERR "codec_read %d: semaphore is not ready for register 0x%x\n", ac97->num, reg); +			dev_err(chip->card->dev, +				"codec_read %d: semaphore is not ready for register 0x%x\n", +				ac97->num, reg);  		res = 0xffff;  	} else {  		res = iagetword(chip, reg + ac97->num * 0x80); @@ -372,7 +377,9 @@ static unsigned short snd_intel8x0_codec_read(struct snd_ac97 *ac97,  			iputdword(chip, ICHREG(GLOB_STA),  				  tmp & ~(ICH_SRI|ICH_PRI|ICH_TRI|ICH_GSCI));  			if (! chip->in_ac97_init) -				snd_printk(KERN_ERR "codec_read %d: read timeout for register 0x%x\n", ac97->num, reg); +				dev_err(chip->card->dev, +					"codec_read %d: read timeout for register 0x%x\n", +					ac97->num, reg);  			res = 0xffff;  		}  	} @@ -385,7 +392,7 @@ static unsigned short snd_intel8x0_codec_read(struct snd_ac97 *ac97,  /*   * DMA I/O   */ -static void snd_intel8x0_setup_periods(struct intel8x0m *chip, struct ichdev *ichdev)  +static void snd_intel8x0m_setup_periods(struct intel8x0m *chip, struct ichdev *ichdev)  {  	int idx;  	u32 *bdbar = ichdev->bdbar; @@ -412,7 +419,7 @@ static void snd_intel8x0_setup_periods(struct intel8x0m *chip, struct ichdev *ic  			bdbar[idx + 1] = cpu_to_le32(0x80000000 | /* interrupt on completion */  						     ichdev->fragsize >> chip->pcm_pos_shift);  			/* -			printk(KERN_DEBUG "bdbar[%i] = 0x%x [0x%x]\n", +			dev_dbg(chip->card->dev, "bdbar[%i] = 0x%x [0x%x]\n",  			       idx + 0, bdbar[idx + 0], bdbar[idx + 1]);  			*/  		} @@ -424,8 +431,8 @@ static void snd_intel8x0_setup_periods(struct intel8x0m *chip, struct ichdev *ic  	ichdev->lvi_frag = ICH_REG_LVI_MASK % ichdev->frags;  	ichdev->position = 0;  #if 0 -	printk(KERN_DEBUG "lvi_frag = %i, frags = %i, period_size = 0x%x, " -	       "period_size1 = 0x%x\n", +	dev_dbg(chip->card->dev, +		"lvi_frag = %i, frags = %i, period_size = 0x%x, period_size1 = 0x%x\n",  	       ichdev->lvi_frag, ichdev->frags, ichdev->fragsize,  	       ichdev->fragsize1);  #endif @@ -437,7 +444,7 @@ static void snd_intel8x0_setup_periods(struct intel8x0m *chip, struct ichdev *ic   *  Interrupt handler   */ -static inline void snd_intel8x0_update(struct intel8x0m *chip, struct ichdev *ichdev) +static inline void snd_intel8x0m_update(struct intel8x0m *chip, struct ichdev *ichdev)  {  	unsigned long port = ichdev->reg_offset;  	int civ, i, step; @@ -470,8 +477,8 @@ static inline void snd_intel8x0_update(struct intel8x0m *chip, struct ichdev *ic  							     ichdev->lvi_frag *  							     ichdev->fragsize1);  #if 0 -		printk(KERN_DEBUG "new: bdbar[%i] = 0x%x [0x%x], " -		       "prefetch = %i, all = 0x%x, 0x%x\n", +		dev_dbg(chip->card->dev, +			"new: bdbar[%i] = 0x%x [0x%x], prefetch = %i, all = 0x%x, 0x%x\n",  		       ichdev->lvi * 2, ichdev->bdbar[ichdev->lvi * 2],  		       ichdev->bdbar[ichdev->lvi * 2 + 1], inb(ICH_REG_OFF_PIV + port),  		       inl(port + 4), inb(port + ICH_REG_OFF_CR)); @@ -489,7 +496,7 @@ static inline void snd_intel8x0_update(struct intel8x0m *chip, struct ichdev *ic  	iputbyte(chip, port + ichdev->roff_sr, ICH_FIFOE | ICH_BCIS | ICH_LVBCI);  } -static irqreturn_t snd_intel8x0_interrupt(int irq, void *dev_id) +static irqreturn_t snd_intel8x0m_interrupt(int irq, void *dev_id)  {  	struct intel8x0m *chip = dev_id;  	struct ichdev *ichdev; @@ -512,7 +519,7 @@ static irqreturn_t snd_intel8x0_interrupt(int irq, void *dev_id)  	for (i = 0; i < chip->bdbars_count; i++) {  		ichdev = &chip->ichd[i];  		if (status & ichdev->int_sta_mask) -			snd_intel8x0_update(chip, ichdev); +			snd_intel8x0m_update(chip, ichdev);  	}  	/* ack them */ @@ -526,7 +533,7 @@ static irqreturn_t snd_intel8x0_interrupt(int irq, void *dev_id)   *  PCM part   */ -static int snd_intel8x0_pcm_trigger(struct snd_pcm_substream *substream, int cmd) +static int snd_intel8x0m_pcm_trigger(struct snd_pcm_substream *substream, int cmd)  {  	struct intel8x0m *chip = snd_pcm_substream_chip(substream);  	struct ichdev *ichdev = get_ichdev(substream); @@ -561,18 +568,18 @@ static int snd_intel8x0_pcm_trigger(struct snd_pcm_substream *substream, int cmd  	return 0;  } -static int snd_intel8x0_hw_params(struct snd_pcm_substream *substream, +static int snd_intel8x0m_hw_params(struct snd_pcm_substream *substream,  				  struct snd_pcm_hw_params *hw_params)  {  	return snd_pcm_lib_malloc_pages(substream, params_buffer_bytes(hw_params));  } -static int snd_intel8x0_hw_free(struct snd_pcm_substream *substream) +static int snd_intel8x0m_hw_free(struct snd_pcm_substream *substream)  {  	return snd_pcm_lib_free_pages(substream);  } -static snd_pcm_uframes_t snd_intel8x0_pcm_pointer(struct snd_pcm_substream *substream) +static snd_pcm_uframes_t snd_intel8x0m_pcm_pointer(struct snd_pcm_substream *substream)  {  	struct intel8x0m *chip = snd_pcm_substream_chip(substream);  	struct ichdev *ichdev = get_ichdev(substream); @@ -600,7 +607,7 @@ static int snd_intel8x0m_pcm_prepare(struct snd_pcm_substream *substream)  	ichdev->fragsize = snd_pcm_lib_period_bytes(substream);  	snd_ac97_write(ichdev->ac97, AC97_LINE1_RATE, runtime->rate);  	snd_ac97_write(ichdev->ac97, AC97_LINE1_LEVEL, 0); -	snd_intel8x0_setup_periods(chip, ichdev); +	snd_intel8x0m_setup_periods(chip, ichdev);  	return 0;  } @@ -682,22 +689,22 @@ static struct snd_pcm_ops snd_intel8x0m_playback_ops = {  	.open =		snd_intel8x0m_playback_open,  	.close =	snd_intel8x0m_playback_close,  	.ioctl =	snd_pcm_lib_ioctl, -	.hw_params =	snd_intel8x0_hw_params, -	.hw_free =	snd_intel8x0_hw_free, +	.hw_params =	snd_intel8x0m_hw_params, +	.hw_free =	snd_intel8x0m_hw_free,  	.prepare =	snd_intel8x0m_pcm_prepare, -	.trigger =	snd_intel8x0_pcm_trigger, -	.pointer =	snd_intel8x0_pcm_pointer, +	.trigger =	snd_intel8x0m_pcm_trigger, +	.pointer =	snd_intel8x0m_pcm_pointer,  };  static struct snd_pcm_ops snd_intel8x0m_capture_ops = {  	.open =		snd_intel8x0m_capture_open,  	.close =	snd_intel8x0m_capture_close,  	.ioctl =	snd_pcm_lib_ioctl, -	.hw_params =	snd_intel8x0_hw_params, -	.hw_free =	snd_intel8x0_hw_free, +	.hw_params =	snd_intel8x0m_hw_params, +	.hw_free =	snd_intel8x0m_hw_free,  	.prepare =	snd_intel8x0m_pcm_prepare, -	.trigger =	snd_intel8x0_pcm_trigger, -	.pointer =	snd_intel8x0_pcm_pointer, +	.trigger =	snd_intel8x0m_pcm_trigger, +	.pointer =	snd_intel8x0m_pcm_pointer,  }; @@ -710,8 +717,8 @@ struct ich_pcm_table {  	int ac97_idx;  }; -static int __devinit snd_intel8x0_pcm1(struct intel8x0m *chip, int device, -				       struct ich_pcm_table *rec) +static int snd_intel8x0m_pcm1(struct intel8x0m *chip, int device, +			      struct ich_pcm_table *rec)  {  	struct snd_pcm *pcm;  	int err; @@ -749,7 +756,7 @@ static int __devinit snd_intel8x0_pcm1(struct intel8x0m *chip, int device,  	return 0;  } -static struct ich_pcm_table intel_pcms[] __devinitdata = { +static struct ich_pcm_table intel_pcms[] = {  	{  		.suffix = "Modem",  		.playback_ops = &snd_intel8x0m_playback_ops, @@ -759,7 +766,7 @@ static struct ich_pcm_table intel_pcms[] __devinitdata = {  	},  }; -static int __devinit snd_intel8x0_pcm(struct intel8x0m *chip) +static int snd_intel8x0m_pcm(struct intel8x0m *chip)  {  	int i, tblsize, device, err;  	struct ich_pcm_table *tbl, *rec; @@ -791,7 +798,7 @@ static int __devinit snd_intel8x0_pcm(struct intel8x0m *chip)  			if (! chip->ichd[rec->ac97_idx].ac97)  				continue;  		} -		err = snd_intel8x0_pcm1(chip, device, rec); +		err = snd_intel8x0m_pcm1(chip, device, rec);  		if (err < 0)  			return err;  		device++; @@ -806,20 +813,20 @@ static int __devinit snd_intel8x0_pcm(struct intel8x0m *chip)   *  Mixer part   */ -static void snd_intel8x0_mixer_free_ac97_bus(struct snd_ac97_bus *bus) +static void snd_intel8x0m_mixer_free_ac97_bus(struct snd_ac97_bus *bus)  {  	struct intel8x0m *chip = bus->private_data;  	chip->ac97_bus = NULL;  } -static void snd_intel8x0_mixer_free_ac97(struct snd_ac97 *ac97) +static void snd_intel8x0m_mixer_free_ac97(struct snd_ac97 *ac97)  {  	struct intel8x0m *chip = ac97->private_data;  	chip->ac97 = NULL;  } -static int __devinit snd_intel8x0_mixer(struct intel8x0m *chip, int ac97_clock) +static int snd_intel8x0m_mixer(struct intel8x0m *chip, int ac97_clock)  {  	struct snd_ac97_bus *pbus;  	struct snd_ac97_template ac97; @@ -827,22 +834,22 @@ static int __devinit snd_intel8x0_mixer(struct intel8x0m *chip, int ac97_clock)  	int err;  	unsigned int glob_sta = 0;  	static struct snd_ac97_bus_ops ops = { -		.write = snd_intel8x0_codec_write, -		.read = snd_intel8x0_codec_read, +		.write = snd_intel8x0m_codec_write, +		.read = snd_intel8x0m_codec_read,  	};  	chip->in_ac97_init = 1;  	memset(&ac97, 0, sizeof(ac97));  	ac97.private_data = chip; -	ac97.private_free = snd_intel8x0_mixer_free_ac97; +	ac97.private_free = snd_intel8x0m_mixer_free_ac97;  	ac97.scaps = AC97_SCAP_SKIP_AUDIO | AC97_SCAP_POWER_SAVE;  	glob_sta = igetdword(chip, ICHREG(GLOB_STA));  	if ((err = snd_ac97_bus(chip->card, 0, &ops, chip, &pbus)) < 0)  		goto __err; -	pbus->private_free = snd_intel8x0_mixer_free_ac97_bus; +	pbus->private_free = snd_intel8x0m_mixer_free_ac97_bus;  	if (ac97_clock >= 8000 && ac97_clock <= 48000)  		pbus->clock = ac97_clock;  	chip->ac97_bus = pbus; @@ -850,7 +857,8 @@ static int __devinit snd_intel8x0_mixer(struct intel8x0m *chip, int ac97_clock)  	ac97.pci = chip->pci;  	ac97.num = glob_sta & ICH_SCR ? 1 : 0;  	if ((err = snd_ac97_mixer(pbus, &ac97, &x97)) < 0) { -		snd_printk(KERN_ERR "Unable to initialize codec #%d\n", ac97.num); +		dev_err(chip->card->dev, +			"Unable to initialize codec #%d\n", ac97.num);  		if (ac97.num == 0)  			goto __err;  		return err; @@ -894,13 +902,14 @@ static int snd_intel8x0m_ich_chip_init(struct intel8x0m *chip, int probing)  	/* finish cold or do warm reset */  	cnt |= (cnt & ICH_AC97COLD) == 0 ? ICH_AC97COLD : ICH_AC97WARM;  	iputdword(chip, ICHREG(GLOB_CNT), cnt); -	end_time = (jiffies + (HZ / 4)) + 1; +	usleep_range(500, 1000); /* give warm reset some time */ +	end_time = jiffies + HZ / 4;  	do {  		if ((igetdword(chip, ICHREG(GLOB_CNT)) & ICH_AC97WARM) == 0)  			goto __ok;  		schedule_timeout_uninterruptible(1);  	} while (time_after_eq(end_time, jiffies)); -	snd_printk(KERN_ERR "AC'97 warm reset still in progress? [0x%x]\n", +	dev_err(chip->card->dev, "AC'97 warm reset still in progress? [0x%x]\n",  		   igetdword(chip, ICHREG(GLOB_CNT)));  	return -EIO; @@ -920,7 +929,8 @@ static int snd_intel8x0m_ich_chip_init(struct intel8x0m *chip, int probing)  		} while (time_after_eq(end_time, jiffies));  		if (! status) {  			/* no codec is found */ -			snd_printk(KERN_ERR "codec_ready: codec is not ready [0x%x]\n", +			dev_err(chip->card->dev, +				"codec_ready: codec is not ready [0x%x]\n",  				   igetdword(chip, ICHREG(GLOB_STA)));  			return -EIO;  		} @@ -959,7 +969,7 @@ static int snd_intel8x0m_ich_chip_init(struct intel8x0m *chip, int probing)        	return 0;  } -static int snd_intel8x0_chip_init(struct intel8x0m *chip, int probing) +static int snd_intel8x0m_chip_init(struct intel8x0m *chip, int probing)  {  	unsigned int i;  	int err; @@ -980,7 +990,7 @@ static int snd_intel8x0_chip_init(struct intel8x0m *chip, int probing)  	return 0;  } -static int snd_intel8x0_free(struct intel8x0m *chip) +static int snd_intel8x0m_free(struct intel8x0m *chip)  {  	unsigned int i; @@ -1007,13 +1017,14 @@ static int snd_intel8x0_free(struct intel8x0m *chip)  	return 0;  } -#ifdef CONFIG_PM +#ifdef CONFIG_PM_SLEEP  /*   * power management   */ -static int intel8x0m_suspend(struct pci_dev *pci, pm_message_t state) +static int intel8x0m_suspend(struct device *dev)  { -	struct snd_card *card = pci_get_drvdata(pci); +	struct pci_dev *pci = to_pci_dev(dev); +	struct snd_card *card = dev_get_drvdata(dev);  	struct intel8x0m *chip = card->private_data;  	int i; @@ -1027,39 +1038,44 @@ static int intel8x0m_suspend(struct pci_dev *pci, pm_message_t state)  	}  	pci_disable_device(pci);  	pci_save_state(pci); -	pci_set_power_state(pci, pci_choose_state(pci, state)); +	pci_set_power_state(pci, PCI_D3hot);  	return 0;  } -static int intel8x0m_resume(struct pci_dev *pci) +static int intel8x0m_resume(struct device *dev)  { -	struct snd_card *card = pci_get_drvdata(pci); +	struct pci_dev *pci = to_pci_dev(dev); +	struct snd_card *card = dev_get_drvdata(dev);  	struct intel8x0m *chip = card->private_data;  	pci_set_power_state(pci, PCI_D0);  	pci_restore_state(pci);  	if (pci_enable_device(pci) < 0) { -		printk(KERN_ERR "intel8x0m: pci_enable_device failed, " -		       "disabling device\n"); +		dev_err(dev, "pci_enable_device failed, disabling device\n");  		snd_card_disconnect(card);  		return -EIO;  	}  	pci_set_master(pci); -	if (request_irq(pci->irq, snd_intel8x0_interrupt, -			IRQF_SHARED, card->shortname, chip)) { -		printk(KERN_ERR "intel8x0m: unable to grab IRQ %d, " -		       "disabling device\n", pci->irq); +	if (request_irq(pci->irq, snd_intel8x0m_interrupt, +			IRQF_SHARED, KBUILD_MODNAME, chip)) { +		dev_err(dev, "unable to grab IRQ %d, disabling device\n", +			pci->irq);  		snd_card_disconnect(card);  		return -EIO;  	}  	chip->irq = pci->irq; -	snd_intel8x0_chip_init(chip, 0); +	snd_intel8x0m_chip_init(chip, 0);  	snd_ac97_resume(chip->ac97);  	snd_power_change_state(card, SNDRV_CTL_POWER_D0);  	return 0;  } -#endif /* CONFIG_PM */ + +static SIMPLE_DEV_PM_OPS(intel8x0m_pm, intel8x0m_suspend, intel8x0m_resume); +#define INTEL8X0M_PM_OPS	&intel8x0m_pm +#else +#define INTEL8X0M_PM_OPS	NULL +#endif /* CONFIG_PM_SLEEP */  #ifdef CONFIG_PROC_FS  static void snd_intel8x0m_proc_read(struct snd_info_entry * entry, @@ -1082,7 +1098,7 @@ static void snd_intel8x0m_proc_read(struct snd_info_entry * entry,  			(tmp & (ICH_PCR | ICH_SCR | ICH_TCR)) == 0 ? " none" : "");  } -static void __devinit snd_intel8x0m_proc_init(struct intel8x0m * chip) +static void snd_intel8x0m_proc_init(struct intel8x0m *chip)  {  	struct snd_info_entry *entry; @@ -1094,10 +1110,10 @@ static void __devinit snd_intel8x0m_proc_init(struct intel8x0m * chip)  #endif /* CONFIG_PROC_FS */ -static int snd_intel8x0_dev_free(struct snd_device *device) +static int snd_intel8x0m_dev_free(struct snd_device *device)  {  	struct intel8x0m *chip = device->device_data; -	return snd_intel8x0_free(chip); +	return snd_intel8x0m_free(chip);  }  struct ich_reg_info { @@ -1105,10 +1121,10 @@ struct ich_reg_info {  	unsigned int offset;  }; -static int __devinit snd_intel8x0m_create(struct snd_card *card, -					 struct pci_dev *pci, -					 unsigned long device_type, -					 struct intel8x0m ** r_intel8x0) +static int snd_intel8x0m_create(struct snd_card *card, +				struct pci_dev *pci, +				unsigned long device_type, +				struct intel8x0m **r_intel8x0m)  {  	struct intel8x0m *chip;  	int err; @@ -1116,7 +1132,7 @@ static int __devinit snd_intel8x0m_create(struct snd_card *card,  	unsigned int int_sta_masks;  	struct ichdev *ichdev;  	static struct snd_device_ops ops = { -		.dev_free =	snd_intel8x0_dev_free, +		.dev_free =	snd_intel8x0m_dev_free,  	};  	static struct ich_reg_info intel_regs[2] = {  		{ ICH_MIINT, 0 }, @@ -1124,7 +1140,7 @@ static int __devinit snd_intel8x0m_create(struct snd_card *card,  	};  	struct ich_reg_info *tbl; -	*r_intel8x0 = NULL; +	*r_intel8x0m = NULL;  	if ((err = pci_enable_device(pci)) < 0)  		return err; @@ -1157,8 +1173,8 @@ static int __devinit snd_intel8x0m_create(struct snd_card *card,  	else  		chip->addr = pci_iomap(pci, 0, 0);  	if (!chip->addr) { -		snd_printk(KERN_ERR "AC'97 space ioremap problem\n"); -		snd_intel8x0_free(chip); +		dev_err(card->dev, "AC'97 space ioremap problem\n"); +		snd_intel8x0m_free(chip);  		return -EIO;  	}  	if (pci_resource_flags(pci, 3) & IORESOURCE_MEM) /* ICH4 */ @@ -1166,16 +1182,16 @@ static int __devinit snd_intel8x0m_create(struct snd_card *card,  	else  		chip->bmaddr = pci_iomap(pci, 1, 0);  	if (!chip->bmaddr) { -		snd_printk(KERN_ERR "Controller space ioremap problem\n"); -		snd_intel8x0_free(chip); +		dev_err(card->dev, "Controller space ioremap problem\n"); +		snd_intel8x0m_free(chip);  		return -EIO;  	}   port_inited: -	if (request_irq(pci->irq, snd_intel8x0_interrupt, IRQF_SHARED, -			card->shortname, chip)) { -		snd_printk(KERN_ERR "unable to grab IRQ %d\n", pci->irq); -		snd_intel8x0_free(chip); +	if (request_irq(pci->irq, snd_intel8x0m_interrupt, IRQF_SHARED, +			KBUILD_MODNAME, chip)) { +		dev_err(card->dev, "unable to grab IRQ %d\n", pci->irq); +		snd_intel8x0m_free(chip);  		return -EBUSY;  	}  	chip->irq = pci->irq; @@ -1210,7 +1226,7 @@ static int __devinit snd_intel8x0m_create(struct snd_card *card,  	if (snd_dma_alloc_pages(SNDRV_DMA_TYPE_DEV, snd_dma_pci_data(pci),  				chip->bdbars_count * sizeof(u32) * ICH_MAX_FRAGS * 2,  				&chip->bdbars) < 0) { -		snd_intel8x0_free(chip); +		snd_intel8x0m_free(chip);  		return -ENOMEM;  	}  	/* tables must be aligned to 8 bytes here, but the kernel pages @@ -1225,26 +1241,24 @@ static int __devinit snd_intel8x0m_create(struct snd_card *card,  	chip->int_sta_reg = ICH_REG_GLOB_STA;  	chip->int_sta_mask = int_sta_masks; -	if ((err = snd_intel8x0_chip_init(chip, 1)) < 0) { -		snd_intel8x0_free(chip); +	if ((err = snd_intel8x0m_chip_init(chip, 1)) < 0) { +		snd_intel8x0m_free(chip);  		return err;  	}  	if ((err = snd_device_new(card, SNDRV_DEV_LOWLEVEL, chip, &ops)) < 0) { -		snd_intel8x0_free(chip); +		snd_intel8x0m_free(chip);  		return err;  	} -	snd_card_set_dev(card, &pci->dev); - -	*r_intel8x0 = chip; +	*r_intel8x0m = chip;  	return 0;  }  static struct shortname_table {  	unsigned int id;  	const char *s; -} shortnames[] __devinitdata = { +} shortnames[] = {  	{ PCI_DEVICE_ID_INTEL_82801AA_6, "Intel 82801AA-ICH" },  	{ PCI_DEVICE_ID_INTEL_82801AB_6, "Intel 82901AB-ICH0" },  	{ PCI_DEVICE_ID_INTEL_82801BA_6, "Intel 82801BA-ICH2" }, @@ -1260,22 +1274,22 @@ static struct shortname_table {  	{ PCI_DEVICE_ID_NVIDIA_MCP2_MODEM, "NVidia nForce2" },  	{ PCI_DEVICE_ID_NVIDIA_MCP2S_MODEM, "NVidia nForce2s" },  	{ PCI_DEVICE_ID_NVIDIA_MCP3_MODEM, "NVidia nForce3" }, +	{ 0x746e, "AMD AMD8111" },  #if 0  	{ 0x5455, "ALi M5455" }, -	{ 0x746d, "AMD AMD8111" },  #endif  	{ 0 },  }; -static int __devinit snd_intel8x0m_probe(struct pci_dev *pci, -					const struct pci_device_id *pci_id) +static int snd_intel8x0m_probe(struct pci_dev *pci, +			       const struct pci_device_id *pci_id)  {  	struct snd_card *card;  	struct intel8x0m *chip;  	int err;  	struct shortname_table *name; -	err = snd_card_create(index, id, THIS_MODULE, 0, &card); +	err = snd_card_new(&pci->dev, index, id, THIS_MODULE, 0, &card);  	if (err < 0)  		return err; @@ -1295,11 +1309,11 @@ static int __devinit snd_intel8x0m_probe(struct pci_dev *pci,  	}  	card->private_data = chip; -	if ((err = snd_intel8x0_mixer(chip, ac97_clock)) < 0) { +	if ((err = snd_intel8x0m_mixer(chip, ac97_clock)) < 0) {  		snd_card_free(card);  		return err;  	} -	if ((err = snd_intel8x0_pcm(chip)) < 0) { +	if ((err = snd_intel8x0m_pcm(chip)) < 0) {  		snd_card_free(card);  		return err;  	} @@ -1317,33 +1331,19 @@ static int __devinit snd_intel8x0m_probe(struct pci_dev *pci,  	return 0;  } -static void __devexit snd_intel8x0m_remove(struct pci_dev *pci) +static void snd_intel8x0m_remove(struct pci_dev *pci)  {  	snd_card_free(pci_get_drvdata(pci)); -	pci_set_drvdata(pci, NULL);  } -static struct pci_driver driver = { -	.name = "Intel ICH Modem", +static struct pci_driver intel8x0m_driver = { +	.name = KBUILD_MODNAME,  	.id_table = snd_intel8x0m_ids,  	.probe = snd_intel8x0m_probe, -	.remove = __devexit_p(snd_intel8x0m_remove), -#ifdef CONFIG_PM -	.suspend = intel8x0m_suspend, -	.resume = intel8x0m_resume, -#endif +	.remove = snd_intel8x0m_remove, +	.driver = { +		.pm = INTEL8X0M_PM_OPS, +	},  }; - -static int __init alsa_card_intel8x0m_init(void) -{ -	return pci_register_driver(&driver); -} - -static void __exit alsa_card_intel8x0m_exit(void) -{ -	pci_unregister_driver(&driver); -} - -module_init(alsa_card_intel8x0m_init) -module_exit(alsa_card_intel8x0m_exit) +module_pci_driver(intel8x0m_driver);  | 
