Fedora kernel-2.6.17-1.2142_FC4 patched with stable patch-2.6.17.4-vs2.0.2-rc26.diff
[linux-2.6.git] / sound / oss / opl3sa2.c
index 7d7a981..0e161c6 100644 (file)
@@ -69,7 +69,6 @@
 #include <linux/init.h>
 #include <linux/module.h>
 #include <linux/delay.h>
-#include <linux/pm.h>
 #include "sound_config.h"
 
 #include "ad1848.h"
@@ -137,10 +136,6 @@ typedef struct {
        /* PnP Stuff */
        struct pnp_dev* pdev;
        int activated;                  /* Whether said devices have been activated */
-#endif
-#ifdef CONFIG_PM
-       unsigned int    in_suspend;
-       struct pm_dev   *pmdev;
 #endif
        unsigned int    card;
        int             chipset;        /* What's my version(s)? */
@@ -177,9 +172,6 @@ static int __initdata loopback      = -1;
 static int __initdata isapnp = 1;
 static int __initdata multiple = 1;
 
-/* PnP devices */
-struct pnp_dev* opl3sa2_dev[OPL3SA2_CARDS_MAX];
-
 /* Whether said devices have been activated */
 static int opl3sa2_activated[OPL3SA2_CARDS_MAX];
 #else
@@ -192,35 +184,35 @@ MODULE_AUTHOR("Scott Murray <scott@spiteful.org>");
 MODULE_LICENSE("GPL");
 
 
-MODULE_PARM(io, "i");
+module_param(io, int, 0);
 MODULE_PARM_DESC(io, "Set I/O base of OPL3-SA2 or SA3 card (usually 0x370.  Address must be even and must be from 0x100 to 0xFFE)");
 
-MODULE_PARM(mss_io, "i");
+module_param(mss_io, int, 0);
 MODULE_PARM_DESC(mss_io, "Set MSS (audio) I/O base (0x530, 0xE80, or other. Address must end in 0 or 4 and must be from 0x530 to 0xF48)");
 
-MODULE_PARM(mpu_io, "i");
+module_param(mpu_io, int, 0);
 MODULE_PARM_DESC(mpu_io, "Set MIDI I/O base (0x330 or other. Address must be even and must be from 0x300 to 0x334)");
 
-MODULE_PARM(irq, "i");
-MODULE_PARM_DESC(mss_irq, "Set MSS (audio) IRQ (5, 7, 9, 10, 11, 12)");
+module_param(irq, int, 0);
+MODULE_PARM_DESC(irq, "Set MSS (audio) IRQ (5, 7, 9, 10, 11, 12)");
 
-MODULE_PARM(dma, "i");
+module_param(dma, int, 0);
 MODULE_PARM_DESC(dma, "Set MSS (audio) first DMA channel (0, 1, 3)");
 
-MODULE_PARM(dma2, "i");
+module_param(dma2, int, 0);
 MODULE_PARM_DESC(dma2, "Set MSS (audio) second DMA channel (0, 1, 3)");
 
-MODULE_PARM(ymode, "i");
+module_param(ymode, int, 0);
 MODULE_PARM_DESC(ymode, "Set Yamaha 3D enhancement mode (0 = Desktop/Normal, 1 = Notebook PC (1), 2 = Notebook PC (2), 3 = Hi-Fi)");
 
-MODULE_PARM(loopback, "i");
+module_param(loopback, int, 0);
 MODULE_PARM_DESC(loopback, "Set A/D input source. Useful for echo cancellation (0 = Mic Rch (default), 1 = Mono output loopback)");
 
 #ifdef CONFIG_PNP
-MODULE_PARM(isapnp, "i");
+module_param(isapnp, bool, 0);
 MODULE_PARM_DESC(isapnp, "When set to 0, ISA PnP support will be disabled");
 
-MODULE_PARM(multiple, "i");
+module_param(multiple, bool, 0);
 MODULE_PARM_DESC(multiple, "When set to 0, will not search for multiple cards");
 #endif
 
@@ -343,22 +335,6 @@ static void opl3sa2_mixer_reset(opl3sa2_state_t* devc)
        }
 }
 
-/* Currently only used for power management */
-#ifdef CONFIG_PM
-static void opl3sa2_mixer_restore(opl3sa2_state_t* devc)
-{
-       if (devc) {
-               opl3sa2_set_volume(devc, devc->volume_l, devc->volume_r);
-               opl3sa2_set_mic(devc, devc->mic);
-
-               if (devc->chipset == CHIPSET_OPL3SA3) {
-                       opl3sa3_set_bass(devc, devc->bass_l, devc->bass_r);
-                       opl3sa3_set_treble(devc, devc->treble_l, devc->treble_r);
-               }
-       }
-}
-#endif
-
 static inline void arg_to_vol_mono(unsigned int vol, int* value)
 {
        int left;
@@ -554,7 +530,7 @@ static void __init attach_opl3sa2_mss(struct address_info* hw_config, struct res
        if (hw_config->slots[0] != -1) {
                /* Did the MSS driver install? */
                if(num_mixers == (initial_mixers + 1)) {
-                       /* The MSS mixer is installed, reroute mixers appropiately */
+                       /* The MSS mixer is installed, reroute mixers appropriately */
                        AD1848_REROUTE(SOUND_MIXER_LINE1, SOUND_MIXER_CD);
                        AD1848_REROUTE(SOUND_MIXER_LINE2, SOUND_MIXER_SYNTH);
                        AD1848_REROUTE(SOUND_MIXER_LINE3, SOUND_MIXER_LINE);
@@ -714,7 +690,7 @@ static void __init attach_opl3sa2_mixer(struct address_info *hw_config, int card
 }
 
 
-static void __init opl3sa2_clear_slots(struct address_info* hw_config)
+static void opl3sa2_clear_slots(struct address_info* hw_config)
 {
        int i;
 
@@ -775,7 +751,7 @@ static void __exit unload_opl3sa2(struct address_info* hw_config, int card)
 }
 
 #ifdef CONFIG_PNP
-struct pnp_device_id pnp_opl3sa2_list[] = {
+static struct pnp_device_id pnp_opl3sa2_list[] = {
        {.id = "YMH0021", .driver_data = 0},
        {.id = ""}
 };
@@ -834,83 +810,6 @@ static struct pnp_driver opl3sa2_driver = {
 
 /* End of component functions */
 
-#ifdef CONFIG_PM
-static spinlock_t opl3sa2_lock = SPIN_LOCK_UNLOCKED;
-
-/* Power Management support functions */
-static int opl3sa2_suspend(struct pm_dev *pdev, unsigned int pm_mode)
-{
-       unsigned long flags;
-       opl3sa2_state_t *p;
-
-       if (!pdev)
-               return -EINVAL;
-
-       spin_lock_irqsave(&opl3sa2_lock,flags);
-
-       p = (opl3sa2_state_t *) pdev->data;
-       switch (pm_mode) {
-       case 1:
-               pm_mode = OPL3SA2_PM_MODE1;
-               break;
-       case 2:
-               pm_mode = OPL3SA2_PM_MODE2;
-               break;
-       case 3:
-               pm_mode = OPL3SA2_PM_MODE3;
-               break;
-       default:
-               /* we don't know howto handle this... */
-               spin_unlock_irqrestore(&opl3sa2_lock, flags);
-               return -EBUSY;
-       }
-
-       p->in_suspend = 1;
-
-       /* its supposed to automute before suspending, so we won't bother */
-       opl3sa2_write(p->cfg_port, OPL3SA2_PM, pm_mode);
-       /* wait a while for the clock oscillator to stabilise */
-       mdelay(10);
-
-       spin_unlock_irqrestore(&opl3sa2_lock,flags);
-       return 0;
-}
-
-static int opl3sa2_resume(struct pm_dev *pdev)
-{
-       unsigned long flags;
-       opl3sa2_state_t *p;
-
-       if (!pdev)
-               return -EINVAL;
-
-       p = (opl3sa2_state_t *) pdev->data;
-       spin_lock_irqsave(&opl3sa2_lock,flags);
-
-       /* I don't think this is necessary */
-       opl3sa2_write(p->cfg_port, OPL3SA2_PM, OPL3SA2_PM_MODE0);
-       opl3sa2_mixer_restore(p);
-       p->in_suspend = 0;
-
-       spin_unlock_irqrestore(&opl3sa2_lock,flags);
-       return 0;
-}
-
-static int opl3sa2_pm_callback(struct pm_dev *pdev, pm_request_t rqst, void *data)
-{
-       unsigned long mode = (unsigned  long)data;
-
-       switch (rqst) {
-               case PM_SUSPEND:
-                       return opl3sa2_suspend(pdev, mode);
-
-               case PM_RESUME:
-                       return opl3sa2_resume(pdev);
-       }
-       return 0;
-}
-#endif /* CONFIG_PM */
-
 /*
  * Install OPL3-SA2 based card(s).
  *
@@ -1022,12 +921,6 @@ static int __init init_opl3sa2(void)
 
                /* ewww =) */
                opl3sa2_state[card].card = card;
-#ifdef CONFIG_PM
-               /* register our power management capabilities */
-               opl3sa2_state[card].pmdev = pm_register(PM_ISA_DEV, card, opl3sa2_pm_callback);
-               if (opl3sa2_state[card].pmdev)
-                       opl3sa2_state[card].pmdev->data = &opl3sa2_state[card];
-#endif /* CONFIG_PM */
 
                /*
                 * Set the Yamaha 3D enhancement mode (aka Ymersion) if asked to and
@@ -1084,10 +977,6 @@ static void __exit cleanup_opl3sa2(void)
        int card;
 
        for(card = 0; card < opl3sa2_cards_num; card++) {
-#ifdef CONFIG_PM
-               if (opl3sa2_state[card].pmdev)
-                       pm_unregister(opl3sa2_state[card].pmdev);
-#endif
                if (opl3sa2_state[card].cfg_mpu.slots[1] != -1) {
                        unload_opl3sa2_mpu(&opl3sa2_state[card].cfg_mpu);
                }