Skip site navigation (1)Skip section navigation (2)
Date:      Mon, 5 May 2003 17:37:40 -0400
From:      Mathew Kanner <mat@cnd.mcgill.ca>
To:        Alex Teslik <alex@acatysmoof.com>
Cc:        list-freebsd-multimedia <freebsd-multimedia@freebsd.org>
Subject:   Re: Logitech Wingman Attack joystick
Message-ID:  <20030505213740.GF31681@cnd.mcgill.ca>
In-Reply-To: <20030505070220.M38996@acatysmoof.com>
References:  <20030505070220.M38996@acatysmoof.com>

next in thread | previous in thread | raw e-mail | index | archive | help

--jI8keyz6grp/JLjh
Content-Type: text/plain; charset=us-ascii
Content-Disposition: inline

[ Not for -questions ]

On May 05, Alex Teslik wrote:
> [...]
> and no response when I actually press a button.
> 
> Is there another way to test or calibrate joysticks in FreeBSD?
> Out of ideas. Any help much appreciated.

	Hello Alex,
	Feel brave?  Try this untested patch, it's against 4.8-rc1 I
think.  I don't have a soundblaster so it's really just a wild guess.

	Uh, use modules. and edit /usr/src/sys/modules/joy/Makefile as
-SRCS    = bus_if.h device_if.h isa_if.h joy.c
+SRCS    = bus_if.h device_if.h isa_if.h pci_if.h joy.c

	Cheers,
	--Mat

-- 
Brain: Are you pondering what I'm pondering?
Pinky: I think so, Brain, but me and Pippi Longstocking... I mean,
what would the children look like?

--jI8keyz6grp/JLjh
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment; filename="48_sys_isa_joy.c.patch"

--- joy.c.old	Mon May  5 09:14:16 2003
+++ joy.c	Mon May  5 09:26:55 2003
@@ -44,6 +44,9 @@
 #include <isa/isavar.h>
 #include "isa_if.h"
 
+#include <pci/pcireg.h>
+#include <pci/pcivar.h>
+#include "pci_if.h"
 /* The game port can manage 4 buttons and 4 variable resistors (usually 2
  * joysticks, each with 2 buttons and 2 pots.) via the port at address 0x201.
  * Getting the state of the buttons is done by reading the game port:
@@ -70,7 +73,7 @@
 #define JOY_SOFTC(unit) (struct joy_softc *) \
         devclass_get_softc(joy_devclass,(unit))
 
-static int joy_probe (device_t);
+static int joy_isa_probe (device_t);
 static int joy_attach (device_t);
 
 #define CDEV_MAJOR 51
@@ -111,7 +114,7 @@
 };
 
 static int
-joy_probe (device_t dev)
+joy_isa_probe (device_t dev)
 {
     if (ISA_PNP_PROBE(device_get_parent(dev), dev, joy_ids) == ENXIO)
         return ENXIO;
@@ -144,19 +147,52 @@
     return 0;
 }
 
-static device_method_t joy_methods[] = {
-    DEVMETHOD(device_probe,	joy_probe),
+static device_method_t joy_isa_methods[] = {
+    DEVMETHOD(device_probe,	joy_isa_probe),
     DEVMETHOD(device_attach,	joy_attach),
     { 0, 0 }
 };
 
 static driver_t joy_isa_driver = {
     "joy",
-    joy_methods,
+    joy_isa_methods,
     sizeof (struct joy_softc)
 };
 
 DRIVER_MODULE(joy, isa, joy_isa_driver, joy_devclass, 0, 0);
+
+static int
+joy_pci_probe(device_t dev)
+{
+	char *s = NULL;
+
+	switch (pci_get_devid(dev)) {
+	    case 0x70021102:
+		s = "Creative EMU10K1 Joystick";
+		device_quiet(dev);
+		break;
+	    case 0x70031102:
+		s = "Creative EMU10K2 Joystick";
+		device_quiet(dev);
+		break;
+	}
+	if (s) device_set_desc(dev, s);
+	    return s ? 0 : ENXIO;
+}
+
+static device_method_t joy_pci_methods[] = {
+    DEVMETHOD(device_probe, joy_pci_probe),
+    DEVMETHOD(device_attach, joy_attach),
+    { 0, 0 }
+};
+
+static driver_t joy_pci_driver = {
+	"joy",
+	joy_pci_methods,
+	sizeof (struct joy_softc)
+};
+
+DRIVER_MODULE(joy, pci, joy_pci_driver, joy_devclass, 0, 0);
 
 static int
 joyopen(dev_t dev, int flags, int fmt, struct proc *p)

--jI8keyz6grp/JLjh--



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20030505213740.GF31681>