summaryrefslogtreecommitdiffstats
path: root/sound/oss/esssolo1.c
diff options
context:
space:
mode:
authorDmitry Torokhov <dtor_core@ameritech.net>2005-06-01 02:38:33 -0500
committerDmitry Torokhov <dtor_core@ameritech.net>2005-06-01 02:38:33 -0500
commit04b6389a5e236a0d214503e922f1e87ccb97f79d (patch)
tree47ed4e0f45064145cb7bb3d36f1318ea1c75ac86 /sound/oss/esssolo1.c
parent3f9f17d443226f2efd4ff45d333f21dd028afe50 (diff)
downloadlinux-04b6389a5e236a0d214503e922f1e87ccb97f79d.tar.bz2
Input: ESS Solo (OSS) - do not carry around gameport code if gameport
core support is disabled. Signed-off-by: Dmitry Torokhov <dtor@mail.ru>
Diffstat (limited to 'sound/oss/esssolo1.c')
-rw-r--r--sound/oss/esssolo1.c26
1 files changed, 21 insertions, 5 deletions
diff --git a/sound/oss/esssolo1.c b/sound/oss/esssolo1.c
index 6b3b9a99579d..a682ab1242cc 100644
--- a/sound/oss/esssolo1.c
+++ b/sound/oss/esssolo1.c
@@ -149,6 +149,10 @@
#define FMODE_DMFM 0x10
+#if defined(CONFIG_GAMEPORT) || (defined(MODULE) && defined(CONFIG_GAMEPORT_MODULE))
+#define SUPPORT_JOYSTICK 1
+#endif
+
static struct pci_driver solo1_driver;
/* --------------------------------------------------------------------- */
@@ -226,7 +230,9 @@ struct solo1_state {
unsigned char obuf[MIDIOUTBUF];
} midi;
+#if SUPPORT_JOYSTICK
struct gameport *gameport;
+#endif
};
/* --------------------------------------------------------------------- */
@@ -2280,6 +2286,7 @@ solo1_resume(struct pci_dev *pci_dev) {
return 0;
}
+#ifdef SUPPORT_JOYSTICK
static int __devinit solo1_register_gameport(struct solo1_state *s, int io_port)
{
struct gameport *gp;
@@ -2306,6 +2313,19 @@ static int __devinit solo1_register_gameport(struct solo1_state *s, int io_port)
return 0;
}
+static inline void solo1_unregister_gameport(struct solo1_state *s)
+{
+ if (s->gameport) {
+ int gpio = s->gameport->io;
+ gameport_unregister_port(s->gameport);
+ release_region(gpio, GAMEPORT_EXTENT);
+ }
+}
+#else
+static inline int solo1_register_gameport(struct solo1_state *s, int io_port) { return -ENOSYS; }
+static inline void solo1_unregister_gameport(struct solo1_state *s) { }
+#endif /* SUPPORT_JOYSTICK */
+
static int __devinit solo1_probe(struct pci_dev *pcidev, const struct pci_device_id *pciid)
{
struct solo1_state *s;
@@ -2437,11 +2457,7 @@ static void __devexit solo1_remove(struct pci_dev *dev)
synchronize_irq(s->irq);
pci_write_config_word(s->dev, 0x60, 0); /* turn off DDMA controller address space */
free_irq(s->irq, s);
- if (s->gameport) {
- int gpio = s->gameport->io;
- gameport_unregister_port(s->gameport);
- release_region(gpio, GAMEPORT_EXTENT);
- }
+ solo1_unregister_gameport(s);
release_region(s->iobase, IOBASE_EXTENT);
release_region(s->sbbase+FMSYNTH_EXTENT, SBBASE_EXTENT-FMSYNTH_EXTENT);
release_region(s->ddmabase, DDMABASE_EXTENT);