Date: Thu, 22 Apr 1999 00:58:27 -0700 From: Amancio Hasty <hasty@rah.star-gate.com> To: Nick Hibma <nick.hibma@jrc.it> Cc: Freebsd-current@FreeBSD.ORG Subject: Re: USB keyboard attach function? Message-ID: <199904220758.AAA09090@rah.star-gate.com> In-Reply-To: Your message of "Thu, 22 Apr 1999 09:45:39 %2B0200." <Pine.BSF.3.96.990422094505.8635B-100000@elpc36.jrc.it>
next in thread | previous in thread | raw e-mail | index | archive | help
[-- Attachment #1 --]
> Did you update your rc.conf lately? It should contain the startup of
> the usbd daemon.
I know start usbd upon startup 8)
> > A side note, someone fixed syscons so it no longer panics if
> > the atkbd device is not configured . In my case, I have
> > a USB keyboard and a USB mouse connected to the
> > system with no atkbdc nor atbkd device . It works like
> > a charm now 8)
>
> Cool!
>
Not quite a fix however the following patches fixes disconnect /reconnect
problems with my USB mouse and the 3com USB modem . This is a
bandage please don't commit is just that right if I diconnect my usb
modem or usb mouse my system panics hence the following simple patch.
Disconnected and reconnected my mouse several times and got no
panic plus every time someone calls here the USB modem does
not crash my system 8)
One thing though someone ought to fix moused so that if
it is talking to a usb mouse which gets disconnected and
then reconnected to enable again the mouse. I managed
to get back my mouse operational by sending a "HUP"
signal to moused.
Enjoy
[-- Attachment #2 --]
diff -r -c usb/ugen.c usb.new/ugen.c
*** usb/ugen.c Fri Apr 16 16:13:36 1999
--- usb.new/ugen.c Wed Apr 21 19:16:54 1999
***************
*** 947,953 ****
struct ugen_endpoint *sce;
int revents = 0;
int s;
!
if (sc->sc_disconnected)
return (EIO);
--- 947,953 ----
struct ugen_endpoint *sce;
int revents = 0;
int s;
! if (sc == NULL ) return (EIO);
if (sc->sc_disconnected)
return (EIO);
diff -r -c usb/ukbd.c usb.new/ukbd.c
*** usb/ukbd.c Sun Apr 11 15:28:38 1999
--- usb.new/ukbd.c Wed Apr 21 19:15:29 1999
***************
*** 306,311 ****
--- 306,312 ----
ukbdpoll(dev_t dev, int event, struct proc *p)
{
USB_GET_SC(ukbd, UKBDUNIT(dev),sc);
+ if (sc == NULL ) return 0;
return genkbdpoll(&sc->sc_gensc, sc->sc_kbd, event, p);
}
diff -r -c usb/ums.c usb.new/ums.c
*** usb/ums.c Fri Apr 16 16:13:47 1999
--- usb.new/ums.c Wed Apr 21 18:59:09 1999
***************
*** 664,669 ****
--- 664,670 ----
USB_GET_SC(ums, UMSUNIT(dev), sc);
int revents = 0;
int s;
+ if (sc == NULL ) return revents;
s = splusb();
if (events & (POLLIN | POLLRDNORM)) {
diff -r -c usb/usb_port.h usb.new/usb_port.h
*** usb/usb_port.h Wed Apr 21 15:33:44 1999
--- usb.new/usb_port.h Wed Apr 21 18:29:20 1999
***************
*** 202,208 ****
((dev)->softc = device_get_softc(bdev)) : 0)
/* conversion from one type of queue to the other */
! #define SIMPLEQ_REMOVE_HEAD STAILQ_REMOVE_HEAD
#define SIMPLEQ_INSERT_HEAD STAILQ_INSERT_HEAD
#define SIMPLEQ_INSERT_TAIL STAILQ_INSERT_TAIL
#define SIMPLEQ_NEXT STAILQ_NEXT
--- 202,216 ----
((dev)->softc = device_get_softc(bdev)) : 0)
/* conversion from one type of queue to the other */
! /* #define SIMPLEQ_REMOVE_HEAD STAILQ_REMOVE_HEAD */
! #define SIMPLEQ_REMOVE_HEAD(head, field) do { \
! if ((head)->stqh_first != NULL ) { \
! if (((head)->stqh_first = \
! (head)->stqh_first->field.stqe_next) == NULL) \
! (head)->stqh_last = &(head)->stqh_first; \
! } \
! } while (0)
!
#define SIMPLEQ_INSERT_HEAD STAILQ_INSERT_HEAD
#define SIMPLEQ_INSERT_TAIL STAILQ_INSERT_TAIL
#define SIMPLEQ_NEXT STAILQ_NEXT
[-- Attachment #3 --]
Amancio Hasty
hasty@star-gate.com
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?199904220758.AAA09090>
