Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 9 Jun 2005 22:24:46 +0200
From:      Hans Petter Selasky <hselasky@c2i.net>
To:        freebsd-hackers@freebsd.org
Cc:        Norbert Koch <NKoch@demig.de>
Subject:   Re: usbd.conf: detach ukbd
Message-ID:  <200506092224.50203.hselasky@c2i.net>
In-Reply-To: <42A86529.5020103@savvis.net>
References:  <000001c56cf8$fffeb920$4801a8c0@ws-ew-3.W2KDEMIG> <42A86529.5020103@savvis.net>

Next in thread | Previous in thread | Raw E-Mail | Index | Archive | Help
On Thursday 09 June 2005 17:50, Maksim Yevmenkin wrote:
> Norbert,
>
> > when running usbd (under FreeBSD 4.11) with
> > -dv switches I can see that a usb keyboard
> > correctly attaches as ukbd0,
> > but detaches as fall-through "USB device".
>
> does something like
>
> device "USB keyboard"
>  devname "ukbd[0-9]+"
>  attach "foo"
>  detach "bar"
>

I'm not sure if detach is supported like that, because the "ukbd" device name 
will not be passed to "usbd" during detach. Then one needs to match against 
the class/subclass of the USB-keyboard:

device "USB keyboard"
 class 3
 subclass 1
 detach "xxxx ukbd0"

Else if devd is not available on 4.11 you will have to change some code and  
compile a new kernel, from what I can see.

To the file /sys/dev/usb/ukbd.c add this:

static void
usbd_add_device_detach_event(device_t self)
{
   struct usb_event ue;

   bzero(&ue, sizeof(ue));

   strlcpy(ue.u.ue_device.udi_devnames[0],
           device_get_nameunit(self), USB_MAX_DEVNAMELEN) ;

   usb_add_event(USB_EVENT_DEVICE_DETACH, &ue);
   return;
}

ukbd_detach()
{
...
    usbd_add_device_detach_event(self);
    return (0);
}

This will make the suggestion from Maksim work.

A generic solution would be to call "usbd_add_device_detach_event()" from the  
"bus_child_detached" method of uhub, which must be added.

Also one can change "usb_disconnect_port()" to generate the event before the 
sub-devices are detached, but that might not work in all cases.

--HPS



Want to link to this message? Use this URL: <http://docs.FreeBSD.org/cgi/mid.cgi?200506092224.50203.hselasky>