Signed-off-by: Andrew Morton <akpm@osdl.org>
---

 Documentation/sound/alsa/DocBook/writing-an-alsa-driver.tmpl |    6 
 sound/pci/ali5451/ali5451.c                                  |    2 
 sound/pci/als4000.c                                          |    2 
 sound/pci/atiixp.c                                           |    2 
 sound/pci/atiixp_modem.c                                     |    2 
 sound/pci/au88x0/au88x0.c                                    |    2 
 sound/pci/azt3328.c                                          |    2 
 sound/pci/bt87x.c                                            |    2 
 sound/pci/ca0106/ca0106_main.c                               |    2 
 sound/pci/cmipci.c                                           |  159 +++++++++--
 sound/pci/cs4281.c                                           |    2 
 sound/pci/cs46xx/cs46xx.c                                    |    2 
 sound/pci/emu10k1/emu10k1.c                                  |    2 
 sound/pci/emu10k1/emu10k1x.c                                 |    2 
 sound/pci/ens1370.c                                          |    2 
 sound/pci/es1938.c                                           |    2 
 sound/pci/es1968.c                                           |    2 
 sound/pci/fm801.c                                            |    2 
 sound/pci/hda/hda_intel.c                                    |    2 
 sound/pci/ice1712/ice1712.c                                  |    2 
 sound/pci/ice1712/ice1724.c                                  |    2 
 sound/pci/intel8x0.c                                         |    2 
 sound/pci/intel8x0m.c                                        |    2 
 sound/pci/korg1212/korg1212.c                                |    2 
 sound/pci/maestro3.c                                         |    2 
 sound/pci/mixart/mixart.c                                    |    2 
 sound/pci/nm256/nm256.c                                      |    2 
 sound/pci/rme32.c                                            |    2 
 sound/pci/rme96.c                                            |    2 
 sound/pci/rme9652/hdsp.c                                     |    2 
 sound/pci/rme9652/rme9652.c                                  |    2 
 sound/pci/sonicvibes.c                                       |    2 
 sound/pci/trident/trident.c                                  |    2 
 sound/pci/via82xx.c                                          |    2 
 sound/pci/via82xx_modem.c                                    |    2 
 sound/pci/vx222/vx222.c                                      |    2 
 sound/pci/ymfpci/ymfpci.c                                    |    2 
 37 files changed, 177 insertions(+), 58 deletions(-)

diff -puN Documentation/sound/alsa/DocBook/writing-an-alsa-driver.tmpl~alsa-3113 Documentation/sound/alsa/DocBook/writing-an-alsa-driver.tmpl
--- 25/Documentation/sound/alsa/DocBook/writing-an-alsa-driver.tmpl~alsa-3113	2005-05-25 00:54:14.000000000 -0700
+++ 25-akpm/Documentation/sound/alsa/DocBook/writing-an-alsa-driver.tmpl	2005-05-25 00:54:14.000000000 -0700
@@ -371,7 +371,7 @@
           <listitem><para>create <function>probe()</function> callback.</para></listitem>
           <listitem><para>create <function>remove()</function> callback.</para></listitem>
           <listitem><para>create pci_driver table which contains the three pointers above.</para></listitem>
-          <listitem><para>create <function>init()</function> function just calling <function>pci_module_init()</function> to register the pci_driver table defined above.</para></listitem>
+          <listitem><para>create <function>init()</function> function just calling <function>pci_register_driver()</function> to register the pci_driver table defined above.</para></listitem>
           <listitem><para>create <function>exit()</function> function to call <function>pci_unregister_driver()</function> function.</para></listitem>
         </itemizedlist>
       </para>
@@ -1198,7 +1198,7 @@
   /* initialization of the module */
   static int __init alsa_card_mychip_init(void)
   {
-          return pci_module_init(&driver);
+          return pci_register_driver(&driver);
   }
 
   /* clean up the module */
@@ -1654,7 +1654,7 @@
 <![CDATA[
   static int __init alsa_card_mychip_init(void)
   {
-          return pci_module_init(&driver);
+          return pci_register_driver(&driver);
   }
 
   static void __exit alsa_card_mychip_exit(void)
diff -puN sound/pci/ali5451/ali5451.c~alsa-3113 sound/pci/ali5451/ali5451.c
--- 25/sound/pci/ali5451/ali5451.c~alsa-3113	2005-05-25 00:54:14.000000000 -0700
+++ 25-akpm/sound/pci/ali5451/ali5451.c	2005-05-25 00:54:14.000000000 -0700
@@ -2270,7 +2270,7 @@ static struct pci_driver driver = {
 
 static int __init alsa_card_ali_init(void)
 {
-	return pci_module_init(&driver);
+	return pci_register_driver(&driver);
 }
 
 static void __exit alsa_card_ali_exit(void)
diff -puN sound/pci/als4000.c~alsa-3113 sound/pci/als4000.c
--- 25/sound/pci/als4000.c~alsa-3113	2005-05-25 00:54:14.000000000 -0700
+++ 25-akpm/sound/pci/als4000.c	2005-05-25 00:54:14.000000000 -0700
@@ -777,7 +777,7 @@ static struct pci_driver driver = {
 
 static int __init alsa_card_als4000_init(void)
 {
-	return pci_module_init(&driver);
+	return pci_register_driver(&driver);
 }
 
 static void __exit alsa_card_als4000_exit(void)
diff -puN sound/pci/atiixp.c~alsa-3113 sound/pci/atiixp.c
--- 25/sound/pci/atiixp.c~alsa-3113	2005-05-25 00:54:14.000000000 -0700
+++ 25-akpm/sound/pci/atiixp.c	2005-05-25 00:54:14.000000000 -0700
@@ -1645,7 +1645,7 @@ static struct pci_driver driver = {
 
 static int __init alsa_card_atiixp_init(void)
 {
-	return pci_module_init(&driver);
+	return pci_register_driver(&driver);
 }
 
 static void __exit alsa_card_atiixp_exit(void)
diff -puN sound/pci/atiixp_modem.c~alsa-3113 sound/pci/atiixp_modem.c
--- 25/sound/pci/atiixp_modem.c~alsa-3113	2005-05-25 00:54:14.000000000 -0700
+++ 25-akpm/sound/pci/atiixp_modem.c	2005-05-25 00:54:14.000000000 -0700
@@ -1332,7 +1332,7 @@ static struct pci_driver driver = {
 
 static int __init alsa_card_atiixp_init(void)
 {
-	return pci_module_init(&driver);
+	return pci_register_driver(&driver);
 }
 
 static void __exit alsa_card_atiixp_exit(void)
diff -puN sound/pci/au88x0/au88x0.c~alsa-3113 sound/pci/au88x0/au88x0.c
--- 25/sound/pci/au88x0/au88x0.c~alsa-3113	2005-05-25 00:54:14.000000000 -0700
+++ 25-akpm/sound/pci/au88x0/au88x0.c	2005-05-25 00:54:14.000000000 -0700
@@ -375,7 +375,7 @@ static struct pci_driver driver = {
 // initialization of the module
 static int __init alsa_card_vortex_init(void)
 {
-	return pci_module_init(&driver);
+	return pci_register_driver(&driver);
 }
 
 // clean up the module
diff -puN sound/pci/azt3328.c~alsa-3113 sound/pci/azt3328.c
--- 25/sound/pci/azt3328.c~alsa-3113	2005-05-25 00:54:14.000000000 -0700
+++ 25-akpm/sound/pci/azt3328.c	2005-05-25 00:54:14.000000000 -0700
@@ -1520,7 +1520,7 @@ static int __init alsa_card_azf3328_init
 {
 	int err;
 	snd_azf3328_dbgcallenter();
-	err = pci_module_init(&driver);
+	err = pci_register_driver(&driver);
 	snd_azf3328_dbgcallleave();
 	return err;
 }
diff -puN sound/pci/bt87x.c~alsa-3113 sound/pci/bt87x.c
--- 25/sound/pci/bt87x.c~alsa-3113	2005-05-25 00:54:14.000000000 -0700
+++ 25-akpm/sound/pci/bt87x.c	2005-05-25 00:54:14.000000000 -0700
@@ -918,7 +918,7 @@ static int __init alsa_card_bt87x_init(v
 {
 	if (load_all)
 		driver.id_table = snd_bt87x_default_ids;
-	return pci_module_init(&driver);
+	return pci_register_driver(&driver);
 }
 
 static void __exit alsa_card_bt87x_exit(void)
diff -puN sound/pci/ca0106/ca0106_main.c~alsa-3113 sound/pci/ca0106/ca0106_main.c
--- 25/sound/pci/ca0106/ca0106_main.c~alsa-3113	2005-05-25 00:54:14.000000000 -0700
+++ 25-akpm/sound/pci/ca0106/ca0106_main.c	2005-05-25 00:54:14.000000000 -0700
@@ -1268,7 +1268,7 @@ static int __init alsa_card_ca0106_init(
 {
 	int err;
 
-	if ((err = pci_module_init(&driver)) > 0)
+	if ((err = pci_register_driver(&driver)) > 0)
 		return err;
 
 	return 0;
diff -puN sound/pci/cmipci.c~alsa-3113 sound/pci/cmipci.c
--- 25/sound/pci/cmipci.c~alsa-3113	2005-05-25 00:54:14.000000000 -0700
+++ 25-akpm/sound/pci/cmipci.c	2005-05-25 00:54:14.000000000 -0700
@@ -519,40 +519,50 @@ inline static unsigned char snd_cmipci_r
 }
 
 /* bit operations for dword register */
-static void snd_cmipci_set_bit(cmipci_t *cm, unsigned int cmd, unsigned int flag)
+static int snd_cmipci_set_bit(cmipci_t *cm, unsigned int cmd, unsigned int flag)
 {
-	unsigned int val;
-	val = inl(cm->iobase + cmd);
+	unsigned int val, oval;
+	val = oval = inl(cm->iobase + cmd);
 	val |= flag;
+	if (val == oval)
+		return 0;
 	outl(val, cm->iobase + cmd);
+	return 1;
 }
 
-static void snd_cmipci_clear_bit(cmipci_t *cm, unsigned int cmd, unsigned int flag)
+static int snd_cmipci_clear_bit(cmipci_t *cm, unsigned int cmd, unsigned int flag)
 {
-	unsigned int val;
-	val = inl(cm->iobase + cmd);
+	unsigned int val, oval;
+	val = oval = inl(cm->iobase + cmd);
 	val &= ~flag;
+	if (val == oval)
+		return 0;
 	outl(val, cm->iobase + cmd);
+	return 1;
 }
 
-#if 0 // not used
 /* bit operations for byte register */
-static void snd_cmipci_set_bit_b(cmipci_t *cm, unsigned int cmd, unsigned char flag)
+static int snd_cmipci_set_bit_b(cmipci_t *cm, unsigned int cmd, unsigned char flag)
 {
-	unsigned char val;
-	val = inb(cm->iobase + cmd);
+	unsigned char val, oval;
+	val = oval = inb(cm->iobase + cmd);
 	val |= flag;
+	if (val == oval)
+		return 0;
 	outb(val, cm->iobase + cmd);
+	return 1;
 }
 
-static void snd_cmipci_clear_bit_b(cmipci_t *cm, unsigned int cmd, unsigned char flag)
+static int snd_cmipci_clear_bit_b(cmipci_t *cm, unsigned int cmd, unsigned char flag)
 {
-	unsigned char val;
-	val = inb(cm->iobase + cmd);
+	unsigned char val, oval;
+	val = oval = inb(cm->iobase + cmd);
 	val &= ~flag;
+	if (val == oval)
+		return 0;
 	outb(val, cm->iobase + cmd);
+	return 1;
 }
-#endif
 
 
 /*
@@ -2250,8 +2260,8 @@ DEFINE_SWITCH_ARG(exchange_dac, CM_REG_M
 DEFINE_SWITCH_ARG(exchange_dac, CM_REG_MISC_CTRL, CM_XCHGDAC, CM_XCHGDAC, 0, 0);
 #endif
 DEFINE_BIT_SWITCH_ARG(fourch, CM_REG_MISC_CTRL, CM_N4SPK3D, 0, 0);
-DEFINE_BIT_SWITCH_ARG(line_rear, CM_REG_MIXER1, CM_SPK4, 1, 0);
-DEFINE_BIT_SWITCH_ARG(line_bass, CM_REG_LEGACY_CTRL, CM_LINE_AS_BASS, 0, 0);
+// DEFINE_BIT_SWITCH_ARG(line_rear, CM_REG_MIXER1, CM_SPK4, 1, 0);
+// DEFINE_BIT_SWITCH_ARG(line_bass, CM_REG_LEGACY_CTRL, CM_LINE_AS_BASS, 0, 0);
 // DEFINE_BIT_SWITCH_ARG(joystick, CM_REG_FUNCTRL1, CM_JYSTK_EN, 0, 0); /* now module option */
 DEFINE_SWITCH_ARG(modem, CM_REG_MISC_CTRL, CM_FLINKON|CM_FLINKOFF, CM_FLINKON, 0, 0);
 
@@ -2300,10 +2310,114 @@ static int snd_cmipci_spdout_enable_put(
 }
 
 
+static int snd_cmipci_line_in_mode_info(snd_kcontrol_t *kcontrol,
+					snd_ctl_elem_info_t *uinfo)
+{
+	cmipci_t *cm = snd_kcontrol_chip(kcontrol);
+	static char *texts[3] = { "Line-In", "Rear Output", "Bass Output" };
+	uinfo->type = SNDRV_CTL_ELEM_TYPE_ENUMERATED;
+	uinfo->count = 1;
+	uinfo->value.enumerated.items = cm->chip_version >= 39 ? 3 : 2;
+	if (uinfo->value.enumerated.item >= uinfo->value.enumerated.items)
+		uinfo->value.enumerated.item = uinfo->value.enumerated.items - 1;
+	strcpy(uinfo->value.enumerated.name, texts[uinfo->value.enumerated.item]);
+	return 0;
+}
+
+static inline unsigned int get_line_in_mode(cmipci_t *cm)
+{
+	unsigned int val;
+	if (cm->chip_version >= 39) {
+		val = snd_cmipci_read(cm, CM_REG_LEGACY_CTRL);
+		if (val & CM_LINE_AS_BASS)
+			return 2;
+	}
+	val = snd_cmipci_read_b(cm, CM_REG_MIXER1);
+	if (val & CM_SPK4)
+		return 1;
+	return 0;
+}
+
+static int snd_cmipci_line_in_mode_get(snd_kcontrol_t *kcontrol,
+				       snd_ctl_elem_value_t *ucontrol)
+{
+	cmipci_t *cm = snd_kcontrol_chip(kcontrol);
+
+	spin_lock_irq(&cm->reg_lock);
+	ucontrol->value.enumerated.item[0] = get_line_in_mode(cm);
+	spin_unlock_irq(&cm->reg_lock);
+	return 0;
+}
+
+static int snd_cmipci_line_in_mode_put(snd_kcontrol_t *kcontrol,
+				       snd_ctl_elem_value_t *ucontrol)
+{
+	cmipci_t *cm = snd_kcontrol_chip(kcontrol);
+	int change;
+
+	spin_lock_irq(&cm->reg_lock);
+	if (ucontrol->value.enumerated.item[0] == 2)
+		change = snd_cmipci_set_bit(cm, CM_REG_LEGACY_CTRL, CM_LINE_AS_BASS);
+	else
+		change = snd_cmipci_clear_bit(cm, CM_REG_LEGACY_CTRL, CM_LINE_AS_BASS);
+	if (ucontrol->value.enumerated.item[0] == 1)
+		change |= snd_cmipci_set_bit_b(cm, CM_REG_MIXER1, CM_SPK4);
+	else
+		change |= snd_cmipci_clear_bit_b(cm, CM_REG_MIXER1, CM_SPK4);
+	spin_unlock_irq(&cm->reg_lock);
+	return change;
+}
+
+static int snd_cmipci_mic_in_mode_info(snd_kcontrol_t *kcontrol,
+				       snd_ctl_elem_info_t *uinfo)
+{
+	static char *texts[2] = { "Mic-In", "Center/LFE Output" };
+	uinfo->type = SNDRV_CTL_ELEM_TYPE_ENUMERATED;
+	uinfo->count = 1;
+	uinfo->value.enumerated.items = 2;
+	if (uinfo->value.enumerated.item >= uinfo->value.enumerated.items)
+		uinfo->value.enumerated.item = uinfo->value.enumerated.items - 1;
+	strcpy(uinfo->value.enumerated.name, texts[uinfo->value.enumerated.item]);
+	return 0;
+}
+
+static int snd_cmipci_mic_in_mode_get(snd_kcontrol_t *kcontrol,
+				      snd_ctl_elem_value_t *ucontrol)
+{
+	cmipci_t *cm = snd_kcontrol_chip(kcontrol);
+	/* same bit as spdi_phase */
+	spin_lock_irq(&cm->reg_lock);
+	ucontrol->value.enumerated.item[0] = 
+		(snd_cmipci_read_b(cm, CM_REG_MISC) & CM_SPDIF_INVERSE) ? 1 : 0;
+	spin_unlock_irq(&cm->reg_lock);
+	return 0;
+}
+
+static int snd_cmipci_mic_in_mode_put(snd_kcontrol_t *kcontrol,
+				      snd_ctl_elem_value_t *ucontrol)
+{
+	cmipci_t *cm = snd_kcontrol_chip(kcontrol);
+	int change;
+
+	spin_lock_irq(&cm->reg_lock);
+	if (ucontrol->value.enumerated.item[0])
+		change = snd_cmipci_set_bit_b(cm, CM_REG_MISC, CM_SPDIF_INVERSE);
+	else
+		change = snd_cmipci_clear_bit_b(cm, CM_REG_MISC, CM_SPDIF_INVERSE);
+	spin_unlock_irq(&cm->reg_lock);
+	return change;
+}
+
 /* both for CM8338/8738 */
 static snd_kcontrol_new_t snd_cmipci_mixer_switches[] __devinitdata = {
 	DEFINE_MIXER_SWITCH("Four Channel Mode", fourch),
-	DEFINE_MIXER_SWITCH("Line-In As Rear", line_rear),
+	{
+		.name = "Line-In Mode",
+		.iface = SNDRV_CTL_ELEM_IFACE_MIXER,
+		.info = snd_cmipci_line_in_mode_info,
+		.get = snd_cmipci_line_in_mode_get,
+		.put = snd_cmipci_line_in_mode_put,
+	},
 };
 
 /* for non-multichannel chips */
@@ -2341,10 +2455,15 @@ static snd_kcontrol_new_t snd_cmipci_old
 
 /* only for model 039 or later */
 static snd_kcontrol_new_t snd_cmipci_extra_mixer_switches[] __devinitdata = {
-	DEFINE_MIXER_SWITCH("Line-In As Bass", line_bass),
 	DEFINE_MIXER_SWITCH("IEC958 In Select", spdif_in_sel2),
 	DEFINE_MIXER_SWITCH("IEC958 In Phase Inverse", spdi_phase2),
-	DEFINE_MIXER_SWITCH("Mic As Center/LFE", spdi_phase), /* same bit as spdi_phase */
+	{
+		.name = "Mic-In Mode",
+		.iface = SNDRV_CTL_ELEM_IFACE_MIXER,
+		.info = snd_cmipci_mic_in_mode_info,
+		.get = snd_cmipci_mic_in_mode_get,
+		.put = snd_cmipci_mic_in_mode_put,
+	}
 };
 
 /* card control switches */
@@ -2944,7 +3063,7 @@ static struct pci_driver driver = {
 	
 static int __init alsa_card_cmipci_init(void)
 {
-	return pci_module_init(&driver);
+	return pci_register_driver(&driver);
 }
 
 static void __exit alsa_card_cmipci_exit(void)
diff -puN sound/pci/cs4281.c~alsa-3113 sound/pci/cs4281.c
--- 25/sound/pci/cs4281.c~alsa-3113	2005-05-25 00:54:14.000000000 -0700
+++ 25-akpm/sound/pci/cs4281.c	2005-05-25 00:54:14.000000000 -0700
@@ -2124,7 +2124,7 @@ static struct pci_driver driver = {
 	
 static int __init alsa_card_cs4281_init(void)
 {
-	return pci_module_init(&driver);
+	return pci_register_driver(&driver);
 }
 
 static void __exit alsa_card_cs4281_exit(void)
diff -puN sound/pci/cs46xx/cs46xx.c~alsa-3113 sound/pci/cs46xx/cs46xx.c
--- 25/sound/pci/cs46xx/cs46xx.c~alsa-3113	2005-05-25 00:54:14.000000000 -0700
+++ 25-akpm/sound/pci/cs46xx/cs46xx.c	2005-05-25 00:54:14.000000000 -0700
@@ -171,7 +171,7 @@ static struct pci_driver driver = {
 
 static int __init alsa_card_cs46xx_init(void)
 {
-	return pci_module_init(&driver);
+	return pci_register_driver(&driver);
 }
 
 static void __exit alsa_card_cs46xx_exit(void)
diff -puN sound/pci/emu10k1/emu10k1.c~alsa-3113 sound/pci/emu10k1/emu10k1.c
--- 25/sound/pci/emu10k1/emu10k1.c~alsa-3113	2005-05-25 00:54:14.000000000 -0700
+++ 25-akpm/sound/pci/emu10k1/emu10k1.c	2005-05-25 00:54:14.000000000 -0700
@@ -228,7 +228,7 @@ static struct pci_driver driver = {
 
 static int __init alsa_card_emu10k1_init(void)
 {
-	return pci_module_init(&driver);
+	return pci_register_driver(&driver);
 }
 
 static void __exit alsa_card_emu10k1_exit(void)
diff -puN sound/pci/emu10k1/emu10k1x.c~alsa-3113 sound/pci/emu10k1/emu10k1x.c
--- 25/sound/pci/emu10k1/emu10k1x.c~alsa-3113	2005-05-25 00:54:14.000000000 -0700
+++ 25-akpm/sound/pci/emu10k1/emu10k1x.c	2005-05-25 00:54:14.000000000 -0700
@@ -1627,7 +1627,7 @@ static int __init alsa_card_emu10k1x_ini
 {
 	int err;
 
-	if ((err = pci_module_init(&driver)) > 0)
+	if ((err = pci_register_driver(&driver)) > 0)
 		return err;
 
 	return 0;
diff -puN sound/pci/ens1370.c~alsa-3113 sound/pci/ens1370.c
--- 25/sound/pci/ens1370.c~alsa-3113	2005-05-25 00:54:14.000000000 -0700
+++ 25-akpm/sound/pci/ens1370.c	2005-05-25 00:54:14.000000000 -0700
@@ -2401,7 +2401,7 @@ static struct pci_driver driver = {
 	
 static int __init alsa_card_ens137x_init(void)
 {
-	return pci_module_init(&driver);
+	return pci_register_driver(&driver);
 }
 
 static void __exit alsa_card_ens137x_exit(void)
diff -puN sound/pci/es1938.c~alsa-3113 sound/pci/es1938.c
--- 25/sound/pci/es1938.c~alsa-3113	2005-05-25 00:54:14.000000000 -0700
+++ 25-akpm/sound/pci/es1938.c	2005-05-25 00:54:14.000000000 -0700
@@ -1761,7 +1761,7 @@ static struct pci_driver driver = {
 
 static int __init alsa_card_es1938_init(void)
 {
-	return pci_module_init(&driver);
+	return pci_register_driver(&driver);
 }
 
 static void __exit alsa_card_es1938_exit(void)
diff -puN sound/pci/es1968.c~alsa-3113 sound/pci/es1968.c
--- 25/sound/pci/es1968.c~alsa-3113	2005-05-25 00:54:14.000000000 -0700
+++ 25-akpm/sound/pci/es1968.c	2005-05-25 00:54:14.000000000 -0700
@@ -2795,7 +2795,7 @@ static struct pci_driver driver = {
 
 static int __init alsa_card_es1968_init(void)
 {
-	return pci_module_init(&driver);
+	return pci_register_driver(&driver);
 }
 
 static void __exit alsa_card_es1968_exit(void)
diff -puN sound/pci/fm801.c~alsa-3113 sound/pci/fm801.c
--- 25/sound/pci/fm801.c~alsa-3113	2005-05-25 00:54:14.000000000 -0700
+++ 25-akpm/sound/pci/fm801.c	2005-05-25 00:54:14.000000000 -0700
@@ -1469,7 +1469,7 @@ static struct pci_driver driver = {
 
 static int __init alsa_card_fm801_init(void)
 {
-	return pci_module_init(&driver);
+	return pci_register_driver(&driver);
 }
 
 static void __exit alsa_card_fm801_exit(void)
diff -puN sound/pci/hda/hda_intel.c~alsa-3113 sound/pci/hda/hda_intel.c
--- 25/sound/pci/hda/hda_intel.c~alsa-3113	2005-05-25 00:54:14.000000000 -0700
+++ 25-akpm/sound/pci/hda/hda_intel.c	2005-05-25 00:54:14.000000000 -0700
@@ -1439,7 +1439,7 @@ static struct pci_driver driver = {
 
 static int __init alsa_card_azx_init(void)
 {
-	return pci_module_init(&driver);
+	return pci_register_driver(&driver);
 }
 
 static void __exit alsa_card_azx_exit(void)
diff -puN sound/pci/ice1712/ice1712.c~alsa-3113 sound/pci/ice1712/ice1712.c
--- 25/sound/pci/ice1712/ice1712.c~alsa-3113	2005-05-25 00:54:14.000000000 -0700
+++ 25-akpm/sound/pci/ice1712/ice1712.c	2005-05-25 00:54:14.000000000 -0700
@@ -2748,7 +2748,7 @@ static struct pci_driver driver = {
 
 static int __init alsa_card_ice1712_init(void)
 {
-	return pci_module_init(&driver);
+	return pci_register_driver(&driver);
 }
 
 static void __exit alsa_card_ice1712_exit(void)
diff -puN sound/pci/ice1712/ice1724.c~alsa-3113 sound/pci/ice1712/ice1724.c
--- 25/sound/pci/ice1712/ice1724.c~alsa-3113	2005-05-25 00:54:14.000000000 -0700
+++ 25-akpm/sound/pci/ice1712/ice1724.c	2005-05-25 00:54:14.000000000 -0700
@@ -2328,7 +2328,7 @@ static struct pci_driver driver = {
 
 static int __init alsa_card_ice1724_init(void)
 {
-	return pci_module_init(&driver);
+	return pci_register_driver(&driver);
 }
 
 static void __exit alsa_card_ice1724_exit(void)
diff -puN sound/pci/intel8x0.c~alsa-3113 sound/pci/intel8x0.c
--- 25/sound/pci/intel8x0.c~alsa-3113	2005-05-25 00:54:14.000000000 -0700
+++ 25-akpm/sound/pci/intel8x0.c	2005-05-25 00:54:14.000000000 -0700
@@ -2849,7 +2849,7 @@ static struct pci_driver driver = {
 
 static int __init alsa_card_intel8x0_init(void)
 {
-	return pci_module_init(&driver);
+	return pci_register_driver(&driver);
 }
 
 static void __exit alsa_card_intel8x0_exit(void)
diff -puN sound/pci/intel8x0m.c~alsa-3113 sound/pci/intel8x0m.c
--- 25/sound/pci/intel8x0m.c~alsa-3113	2005-05-25 00:54:14.000000000 -0700
+++ 25-akpm/sound/pci/intel8x0m.c	2005-05-25 00:54:14.000000000 -0700
@@ -1452,7 +1452,7 @@ static struct pci_driver driver = {
 
 static int __init alsa_card_intel8x0m_init(void)
 {
-	return pci_module_init(&driver);
+	return pci_register_driver(&driver);
 }
 
 static void __exit alsa_card_intel8x0m_exit(void)
diff -puN sound/pci/korg1212/korg1212.c~alsa-3113 sound/pci/korg1212/korg1212.c
--- 25/sound/pci/korg1212/korg1212.c~alsa-3113	2005-05-25 00:54:14.000000000 -0700
+++ 25-akpm/sound/pci/korg1212/korg1212.c	2005-05-25 00:54:14.000000000 -0700
@@ -2541,7 +2541,7 @@ static struct pci_driver driver = {
 
 static int __init alsa_card_korg1212_init(void)
 {
-	return pci_module_init(&driver);
+	return pci_register_driver(&driver);
 }
 
 static void __exit alsa_card_korg1212_exit(void)
diff -puN sound/pci/maestro3.c~alsa-3113 sound/pci/maestro3.c
--- 25/sound/pci/maestro3.c~alsa-3113	2005-05-25 00:54:14.000000000 -0700
+++ 25-akpm/sound/pci/maestro3.c	2005-05-25 00:54:14.000000000 -0700
@@ -2702,7 +2702,7 @@ static struct pci_driver driver = {
 	
 static int __init alsa_card_m3_init(void)
 {
-	return pci_module_init(&driver);
+	return pci_register_driver(&driver);
 }
 
 static void __exit alsa_card_m3_exit(void)
diff -puN sound/pci/mixart/mixart.c~alsa-3113 sound/pci/mixart/mixart.c
--- 25/sound/pci/mixart/mixart.c~alsa-3113	2005-05-25 00:54:14.000000000 -0700
+++ 25-akpm/sound/pci/mixart/mixart.c	2005-05-25 00:54:14.000000000 -0700
@@ -1431,7 +1431,7 @@ static struct pci_driver driver = {
 
 static int __init alsa_card_mixart_init(void)
 {
-	return pci_module_init(&driver);
+	return pci_register_driver(&driver);
 }
 
 static void __exit alsa_card_mixart_exit(void)
diff -puN sound/pci/nm256/nm256.c~alsa-3113 sound/pci/nm256/nm256.c
--- 25/sound/pci/nm256/nm256.c~alsa-3113	2005-05-25 00:54:14.000000000 -0700
+++ 25-akpm/sound/pci/nm256/nm256.c	2005-05-25 00:54:14.000000000 -0700
@@ -1645,7 +1645,7 @@ static struct pci_driver driver = {
 
 static int __init alsa_card_nm256_init(void)
 {
-	return pci_module_init(&driver);
+	return pci_register_driver(&driver);
 }
 
 static void __exit alsa_card_nm256_exit(void)
diff -puN sound/pci/rme32.c~alsa-3113 sound/pci/rme32.c
--- 25/sound/pci/rme32.c~alsa-3113	2005-05-25 00:54:14.000000000 -0700
+++ 25-akpm/sound/pci/rme32.c	2005-05-25 00:54:14.000000000 -0700
@@ -2031,7 +2031,7 @@ static struct pci_driver driver = {
 
 static int __init alsa_card_rme32_init(void)
 {
-	return pci_module_init(&driver);
+	return pci_register_driver(&driver);
 }
 
 static void __exit alsa_card_rme32_exit(void)
diff -puN sound/pci/rme9652/hdsp.c~alsa-3113 sound/pci/rme9652/hdsp.c
--- 25/sound/pci/rme9652/hdsp.c~alsa-3113	2005-05-25 00:54:14.000000000 -0700
+++ 25-akpm/sound/pci/rme9652/hdsp.c	2005-05-25 00:54:14.000000000 -0700
@@ -5194,7 +5194,7 @@ static struct pci_driver driver = {
 
 static int __init alsa_card_hdsp_init(void)
 {
-	return pci_module_init(&driver);
+	return pci_register_driver(&driver);
 }
 
 static void __exit alsa_card_hdsp_exit(void)
diff -puN sound/pci/rme9652/rme9652.c~alsa-3113 sound/pci/rme9652/rme9652.c
--- 25/sound/pci/rme9652/rme9652.c~alsa-3113	2005-05-25 00:54:14.000000000 -0700
+++ 25-akpm/sound/pci/rme9652/rme9652.c	2005-05-25 00:54:14.000000000 -0700
@@ -2664,7 +2664,7 @@ static struct pci_driver driver = {
 
 static int __init alsa_card_hammerfall_init(void)
 {
-	return pci_module_init(&driver);
+	return pci_register_driver(&driver);
 }
 
 static void __exit alsa_card_hammerfall_exit(void)
diff -puN sound/pci/rme96.c~alsa-3113 sound/pci/rme96.c
--- 25/sound/pci/rme96.c~alsa-3113	2005-05-25 00:54:14.000000000 -0700
+++ 25-akpm/sound/pci/rme96.c	2005-05-25 00:54:14.000000000 -0700
@@ -2437,7 +2437,7 @@ static struct pci_driver driver = {
 
 static int __init alsa_card_rme96_init(void)
 {
-	return pci_module_init(&driver);
+	return pci_register_driver(&driver);
 }
 
 static void __exit alsa_card_rme96_exit(void)
diff -puN sound/pci/sonicvibes.c~alsa-3113 sound/pci/sonicvibes.c
--- 25/sound/pci/sonicvibes.c~alsa-3113	2005-05-25 00:54:14.000000000 -0700
+++ 25-akpm/sound/pci/sonicvibes.c	2005-05-25 00:54:14.000000000 -0700
@@ -1522,7 +1522,7 @@ static struct pci_driver driver = {
 
 static int __init alsa_card_sonicvibes_init(void)
 {
-	return pci_module_init(&driver);
+	return pci_register_driver(&driver);
 }
 
 static void __exit alsa_card_sonicvibes_exit(void)
diff -puN sound/pci/trident/trident.c~alsa-3113 sound/pci/trident/trident.c
--- 25/sound/pci/trident/trident.c~alsa-3113	2005-05-25 00:54:14.000000000 -0700
+++ 25-akpm/sound/pci/trident/trident.c	2005-05-25 00:54:14.000000000 -0700
@@ -184,7 +184,7 @@ static struct pci_driver driver = {
 
 static int __init alsa_card_trident_init(void)
 {
-	return pci_module_init(&driver);
+	return pci_register_driver(&driver);
 }
 
 static void __exit alsa_card_trident_exit(void)
diff -puN sound/pci/via82xx.c~alsa-3113 sound/pci/via82xx.c
--- 25/sound/pci/via82xx.c~alsa-3113	2005-05-25 00:54:14.000000000 -0700
+++ 25-akpm/sound/pci/via82xx.c	2005-05-25 00:54:14.000000000 -0700
@@ -2349,7 +2349,7 @@ static struct pci_driver driver = {
 
 static int __init alsa_card_via82xx_init(void)
 {
-	return pci_module_init(&driver);
+	return pci_register_driver(&driver);
 }
 
 static void __exit alsa_card_via82xx_exit(void)
diff -puN sound/pci/via82xx_modem.c~alsa-3113 sound/pci/via82xx_modem.c
--- 25/sound/pci/via82xx_modem.c~alsa-3113	2005-05-25 00:54:14.000000000 -0700
+++ 25-akpm/sound/pci/via82xx_modem.c	2005-05-25 00:54:14.000000000 -0700
@@ -1233,7 +1233,7 @@ static struct pci_driver driver = {
 
 static int __init alsa_card_via82xx_init(void)
 {
-	return pci_module_init(&driver);
+	return pci_register_driver(&driver);
 }
 
 static void __exit alsa_card_via82xx_exit(void)
diff -puN sound/pci/vx222/vx222.c~alsa-3113 sound/pci/vx222/vx222.c
--- 25/sound/pci/vx222/vx222.c~alsa-3113	2005-05-25 00:54:14.000000000 -0700
+++ 25-akpm/sound/pci/vx222/vx222.c	2005-05-25 00:54:14.000000000 -0700
@@ -260,7 +260,7 @@ static struct pci_driver driver = {
 
 static int __init alsa_card_vx222_init(void)
 {
-	return pci_module_init(&driver);
+	return pci_register_driver(&driver);
 }
 
 static void __exit alsa_card_vx222_exit(void)
diff -puN sound/pci/ymfpci/ymfpci.c~alsa-3113 sound/pci/ymfpci/ymfpci.c
--- 25/sound/pci/ymfpci/ymfpci.c~alsa-3113	2005-05-25 00:54:14.000000000 -0700
+++ 25-akpm/sound/pci/ymfpci/ymfpci.c	2005-05-25 00:54:14.000000000 -0700
@@ -360,7 +360,7 @@ static struct pci_driver driver = {
 
 static int __init alsa_card_ymfpci_init(void)
 {
-	return pci_module_init(&driver);
+	return pci_register_driver(&driver);
 }
 
 static void __exit alsa_card_ymfpci_exit(void)
_