2001-12-17 19:43:32

by Simon Roscic

[permalink] [raw]
Subject: compile problem: es1371+gamepad

hi,

i have the following problem,

i have a es1371 soundcard, with an ms sidewinder gamepad.
i selected the es1371 to be compiled into the kernel, and the ms sidewinder gamepad driver as module.

i just tried it with 2.4.17-rc1:
(2.4.17-rc1 with preempt patch, but im sure the preempt patch is not
the cause for the compile error)

---- snip ----
drivers/sound/sounddrivers.o: In function `es1371_probe':
drivers/sound/sounddrivers.o(.text+0x6de9): undefined reference to `gameport_register_port
'
drivers/sound/sounddrivers.o: In function `es1371_remove':
drivers/sound/sounddrivers.o(.text+0x6f26): undefined reference to `gameport_unregister_po
rt'
make: *** [vmlinux] Error 1
---- snip ----

to be sure, i just tried it with a "virgin" 2.4.14:
(i think also 2.4.15+16 are affected)

---- snip ----
drivers/sound/sounddrivers.o: In function `es1371_probe':
drivers/sound/sounddrivers.o(.text+0x5e29): undefined reference to `gameport_register_port'
drivers/sound/sounddrivers.o: In function `es1371_remove':
drivers/sound/sounddrivers.o(.text+0x5f66): undefined reference to `gameport_unregister_port'
make: *** [vmlinux] Error 1
---- snip ----

i attached my ".config",
i'm not on the list, i read lkml with my newsreader
(i dont know if i see "everything" in the newsgroup)
so if you need more information, it will be nice, if you cc me,

simon.


Attachments:
.config (18.36 kB)

2001-12-17 20:08:24

by Adrian Bunk

[permalink] [raw]
Subject: Re: compile problem: es1371+gamepad

On Mon, 17 Dec 2001, Simon Roscic wrote:

> hi,

Hi Simon,

> i have the following problem,
>
> i have a es1371 soundcard, with an ms sidewinder gamepad.
> i selected the es1371 to be compiled into the kernel, and the ms sidewinder gamepad driver as module.
>
> i just tried it with 2.4.17-rc1:
> (2.4.17-rc1 with preempt patch, but im sure the preempt patch is not
> the cause for the compile error)
>
> ---- snip ----
> drivers/sound/sounddrivers.o: In function `es1371_probe':
> drivers/sound/sounddrivers.o(.text+0x6de9): undefined reference to `gameport_register_port
> '
> drivers/sound/sounddrivers.o: In function `es1371_remove':
> drivers/sound/sounddrivers.o(.text+0x6f26): undefined reference to `gameport_unregister_po
> rt'
> make: *** [vmlinux] Error 1
> ---- snip ----
>....
> i attached my ".config",
>...


Simon: As an (untested) workaround until the bug I describe below is fixed
it should work for you if select in the Character devices/Joysticks
submenu the "Game port support" to be compiled statically into the
kernel instead of compiling it as a module.


The problem is (note that CONFIG_INPUT_GAMEPORT is defined twice with
different values):

<-- snip -->

...
#
# Joysticks
#
CONFIG_INPUT_GAMEPORT=m
...
#
# Sound
#
...
CONFIG_SOUND_ES1371=y
...
CONFIG_INPUT_GAMEPORT=y
...

<-- snip -->

It survives even a "make oldconfig".
It's caused by the following in drivers/sound/Config.in:

<-- snip -->

...
# A cross directory dependence. The sound modules will need gameport.o
compiled in,
# but it resides in the drivers/char/joystick directory. This
define_tristate takes
# care of that. --Vojtech

if [ "$CONFIG_INPUT_GAMEPORT" != "n" ]; then
if [ "$CONFIG_SOUND_ESSSOLO1" = "y" -o "$CONFIG_SOUND_ES1370" = "y" -o
"$CONFIG_SOUND_ES1371" = "y" -o "$CONFIG_SOUND_SONICVIBES" = "y" ]; then
define_tristate CONFIG_INPUT_GAMEPORT y
fi
fi

<-- snip -->


> simon.

cu
Adrian

--

Get my GPG key: finger [email protected] | gpg --import

Fingerprint: B29C E71E FE19 6755 5C8A 84D4 99FC EA98 4F12 B400



2001-12-17 20:26:39

by Adrian Bunk

[permalink] [raw]
Subject: Re: compile problem: es1371+gamepad

On Mon, 17 Dec 2001, Adrian Bunk wrote:

>...
> Simon: As an (untested) workaround until the bug I describe below is fixed
> it should work for you if select in the Character devices/Joysticks
> submenu the "Game port support" to be compiled statically into the
> kernel instead of compiling it as a module.
>...

An addition to this (I should have tested it before I sent the mail...):
To do this you need to compile "Input core support" in the submenu with
the same name static instead of modular into the kernel.

cu
Adrian

--

Get my GPG key: finger [email protected] | gpg --import

Fingerprint: B29C E71E FE19 6755 5C8A 84D4 99FC EA98 4F12 B400


2001-12-17 21:00:53

by Adrian Bunk

[permalink] [raw]
Subject: [patch] Re: compile problem: es1371+gamepad


The patch below should hadle this problem better.

I've found another problem:
When I do completely disable "Input core support" after it was compiled
into the kernel and I go to the "Sound" menu the implicite change that
CONFIG_INPUT_GAMEPORT is automatically turned off wasn't done. It seems I
need to either go to the "Joysticks" menu or to quit "make menuconfig" to
get the wanted effect in the "Sound" submenu. Is this a bug or a known
limitation of "make menuconfig"?


--- drivers/sound/Config.in.old Mon Dec 17 21:25:24 2001
+++ drivers/sound/Config.in Mon Dec 17 21:47:04 2001
@@ -34,9 +34,21 @@
dep_mbool ' Creative SBLive! MIDI' CONFIG_MIDI_EMU10K1 $CONFIG_SOUND_EMU10K1 $CONFIG_EXPERIMENTAL
dep_tristate ' Crystal SoundFusion (CS4280/461x)' CONFIG_SOUND_FUSION $CONFIG_SOUND
dep_tristate ' Crystal Sound CS4281' CONFIG_SOUND_CS4281 $CONFIG_SOUND
-dep_tristate ' Ensoniq AudioPCI (ES1370)' CONFIG_SOUND_ES1370 $CONFIG_SOUND $CONFIG_PCI
-dep_tristate ' Creative Ensoniq AudioPCI 97 (ES1371)' CONFIG_SOUND_ES1371 $CONFIG_SOUND $CONFIG_PCI
-dep_tristate ' ESS Technology Solo1' CONFIG_SOUND_ESSSOLO1 $CONFIG_SOUND
+if [ "$CONFIG_INPUT_GAMEPORT" = "y" ]; then
+ dep_tristate ' Ensoniq AudioPCI (ES1370)' CONFIG_SOUND_ES1370 $CONFIG_SOUND $CONFIG_PCI
+else
+ comment ' Compiled-in Game port support needed for Ensoniq AudioPCI (ES1370)'
+fi
+if [ "$CONFIG_INPUT_GAMEPORT" = "y" ]; then
+ dep_tristate ' Creative Ensoniq AudioPCI 97 (ES1371)' CONFIG_SOUND_ES1371 $CONFIG_SOUND $CONFIG_PCI
+else
+ comment ' Compiled-in Game port support needed for Creative Ensoniq AudioPCI 97 (ES1371)'
+fi
+if [ "$CONFIG_INPUT_GAMEPORT" = "y" ]; then
+ dep_tristate ' ESS Technology Solo1' CONFIG_SOUND_ESSSOLO1 $CONFIG_SOUND
+else
+ comment ' Compiled-in Game port support needed for ESS Technology Solo1'
+fi
dep_tristate ' ESS Maestro, Maestro2, Maestro2E driver' CONFIG_SOUND_MAESTRO $CONFIG_SOUND
dep_tristate ' ESS Maestro3/Allegro driver (EXPERIMENTAL)' CONFIG_SOUND_MAESTRO3 $CONFIG_SOUND $CONFIG_PCI $CONFIG_EXPERIMENTAL
dep_tristate ' Intel ICH (i8xx) audio support' CONFIG_SOUND_ICH $CONFIG_PCI
@@ -44,7 +56,11 @@
dep_tristate ' IT8172G Sound' CONFIG_SOUND_IT8172 $CONFIG_SOUND
fi
dep_tristate ' RME Hammerfall (RME96XX) support' CONFIG_SOUND_RME96XX $CONFIG_SOUND $CONFIG_PCI $CONFIG_EXPERIMENTAL
-dep_tristate ' S3 SonicVibes' CONFIG_SOUND_SONICVIBES $CONFIG_SOUND
+if [ "$CONFIG_INPUT_GAMEPORT" = "y" ]; then
+ dep_tristate ' S3 SonicVibes' CONFIG_SOUND_SONICVIBES $CONFIG_SOUND
+else
+ comment ' Compiled-in Game port support needed for S3 SonicVibes'
+fi
if [ "$CONFIG_VISWS" = "y" ]; then
dep_tristate ' SGI Visual Workstation Sound' CONFIG_SOUND_VWSND $CONFIG_SOUND
fi
@@ -204,13 +220,3 @@
fi

dep_tristate ' TV card (bt848) mixer support' CONFIG_SOUND_TVMIXER $CONFIG_SOUND $CONFIG_I2C
-
-# A cross directory dependence. The sound modules will need gameport.o compiled in,
-# but it resides in the drivers/char/joystick directory. This define_tristate takes
-# care of that. --Vojtech
-
-if [ "$CONFIG_INPUT_GAMEPORT" != "n" ]; then
- if [ "$CONFIG_SOUND_ESSSOLO1" = "y" -o "$CONFIG_SOUND_ES1370" = "y" -o "$CONFIG_SOUND_ES1371" = "y" -o "$CONFIG_SOUND_SONICVIBES" = "y" ]; then
- define_tristate CONFIG_INPUT_GAMEPORT y
- fi
-fi

cu
Adrian

--

Get my GPG key: finger [email protected] | gpg --import

Fingerprint: B29C E71E FE19 6755 5C8A 84D4 99FC EA98 4F12 B400

2001-12-17 21:03:06

by Vojtech Pavlik

[permalink] [raw]
Subject: Re: [patch] Re: compile problem: es1371+gamepad

On Mon, Dec 17, 2001 at 10:00:23PM +0100, Adrian Bunk wrote:
>
> The patch below should hadle this problem better.
>
> I've found another problem:
> When I do completely disable "Input core support" after it was compiled
> into the kernel and I go to the "Sound" menu the implicite change that
> CONFIG_INPUT_GAMEPORT is automatically turned off wasn't done. It seems I
> need to either go to the "Joysticks" menu or to quit "make menuconfig" to
> get the wanted effect in the "Sound" submenu. Is this a bug or a known
> limitation of "make menuconfig"?

It really can be solved sufficiently with CML2. Other than that, there
are always combinations which are either causing compile errors or are
possible but not allowed by the menuconfig.

> --- drivers/sound/Config.in.old Mon Dec 17 21:25:24 2001
> +++ drivers/sound/Config.in Mon Dec 17 21:47:04 2001
> @@ -34,9 +34,21 @@
> dep_mbool ' Creative SBLive! MIDI' CONFIG_MIDI_EMU10K1 $CONFIG_SOUND_EMU10K1 $CONFIG_EXPERIMENTAL
> dep_tristate ' Crystal SoundFusion (CS4280/461x)' CONFIG_SOUND_FUSION $CONFIG_SOUND
> dep_tristate ' Crystal Sound CS4281' CONFIG_SOUND_CS4281 $CONFIG_SOUND
> -dep_tristate ' Ensoniq AudioPCI (ES1370)' CONFIG_SOUND_ES1370 $CONFIG_SOUND $CONFIG_PCI
> -dep_tristate ' Creative Ensoniq AudioPCI 97 (ES1371)' CONFIG_SOUND_ES1371 $CONFIG_SOUND $CONFIG_PCI
> -dep_tristate ' ESS Technology Solo1' CONFIG_SOUND_ESSSOLO1 $CONFIG_SOUND
> +if [ "$CONFIG_INPUT_GAMEPORT" = "y" ]; then
> + dep_tristate ' Ensoniq AudioPCI (ES1370)' CONFIG_SOUND_ES1370 $CONFIG_SOUND $CONFIG_PCI
> +else
> + comment ' Compiled-in Game port support needed for Ensoniq AudioPCI (ES1370)'
> +fi
> +if [ "$CONFIG_INPUT_GAMEPORT" = "y" ]; then
> + dep_tristate ' Creative Ensoniq AudioPCI 97 (ES1371)' CONFIG_SOUND_ES1371 $CONFIG_SOUND $CONFIG_PCI
> +else
> + comment ' Compiled-in Game port support needed for Creative Ensoniq AudioPCI 97 (ES1371)'
> +fi
> +if [ "$CONFIG_INPUT_GAMEPORT" = "y" ]; then
> + dep_tristate ' ESS Technology Solo1' CONFIG_SOUND_ESSSOLO1 $CONFIG_SOUND
> +else
> + comment ' Compiled-in Game port support needed for ESS Technology Solo1'
> +fi
> dep_tristate ' ESS Maestro, Maestro2, Maestro2E driver' CONFIG_SOUND_MAESTRO $CONFIG_SOUND
> dep_tristate ' ESS Maestro3/Allegro driver (EXPERIMENTAL)' CONFIG_SOUND_MAESTRO3 $CONFIG_SOUND $CONFIG_PCI $CONFIG_EXPERIMENTAL
> dep_tristate ' Intel ICH (i8xx) audio support' CONFIG_SOUND_ICH $CONFIG_PCI
> @@ -44,7 +56,11 @@
> dep_tristate ' IT8172G Sound' CONFIG_SOUND_IT8172 $CONFIG_SOUND
> fi
> dep_tristate ' RME Hammerfall (RME96XX) support' CONFIG_SOUND_RME96XX $CONFIG_SOUND $CONFIG_PCI $CONFIG_EXPERIMENTAL
> -dep_tristate ' S3 SonicVibes' CONFIG_SOUND_SONICVIBES $CONFIG_SOUND
> +if [ "$CONFIG_INPUT_GAMEPORT" = "y" ]; then
> + dep_tristate ' S3 SonicVibes' CONFIG_SOUND_SONICVIBES $CONFIG_SOUND
> +else
> + comment ' Compiled-in Game port support needed for S3 SonicVibes'
> +fi
> if [ "$CONFIG_VISWS" = "y" ]; then
> dep_tristate ' SGI Visual Workstation Sound' CONFIG_SOUND_VWSND $CONFIG_SOUND
> fi
> @@ -204,13 +220,3 @@
> fi
>
> dep_tristate ' TV card (bt848) mixer support' CONFIG_SOUND_TVMIXER $CONFIG_SOUND $CONFIG_I2C
> -
> -# A cross directory dependence. The sound modules will need gameport.o compiled in,
> -# but it resides in the drivers/char/joystick directory. This define_tristate takes
> -# care of that. --Vojtech
> -
> -if [ "$CONFIG_INPUT_GAMEPORT" != "n" ]; then
> - if [ "$CONFIG_SOUND_ESSSOLO1" = "y" -o "$CONFIG_SOUND_ES1370" = "y" -o "$CONFIG_SOUND_ES1371" = "y" -o "$CONFIG_SOUND_SONICVIBES" = "y" ]; then
> - define_tristate CONFIG_INPUT_GAMEPORT y
> - fi
> -fi
>
> cu
> Adrian
>
> --
>
> Get my GPG key: finger [email protected] | gpg --import
>
> Fingerprint: B29C E71E FE19 6755 5C8A 84D4 99FC EA98 4F12 B400

--
Vojtech Pavlik
SuSE Labs

2001-12-18 10:18:12

by Adrian Bunk

[permalink] [raw]
Subject: Re: [patch] Re: compile problem: es1371+gamepad

On Mon, 17 Dec 2001, Vojtech Pavlik wrote:

> > The patch below should hadle this problem better.
> >
> > I've found another problem:
> > When I do completely disable "Input core support" after it was compiled
> > into the kernel and I go to the "Sound" menu the implicite change that
> > CONFIG_INPUT_GAMEPORT is automatically turned off wasn't done. It seems I
> > need to either go to the "Joysticks" menu or to quit "make menuconfig" to
> > get the wanted effect in the "Sound" submenu. Is this a bug or a known
> > limitation of "make menuconfig"?
>
> It really can be solved sufficiently with CML2. Other than that, there
> are always combinations which are either causing compile errors or are
> possible but not allowed by the menuconfig.

Yes, it's clear to me that these problems won't occur in CML2 but it's
unlikely that CML2 will make it into the 2.4 kernels, so we need
workarounds that work in most cases.

The workaround you invented doesn't work in the case when
CONFIG_INPUT_GAMEPORT is compiled modular.

My patch handles these cases, too. If you do the wrong things in the wrong
order (not that extremely likely) the things that are displayed aren't
100% correct, but at least you do always have a valid configuration in the
end.

IMHO your solution is nearer on how it should be implemented in CML2 and
my solution is a better workaround for the limited CML1.

cu
Adrian

--

Get my GPG key: finger [email protected] | gpg --import

Fingerprint: B29C E71E FE19 6755 5C8A 84D4 99FC EA98 4F12 B400