Skip site navigation (1)Skip section navigation (2)
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>