usbd.conf: detach ukbd
Norbert Koch
NKoch at demig.de
Fri Jun 10 06:18:35 GMT 2005
> 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"
>
But from what I see, when running usbd, the class and
subclass keys of the cherry keyboard, I am testing with,
are both zero at attach and detach. So, one idea would be
to rewrite usbd.conf in the attach script. Usbd
- as it is now - does only setenv ("DEVNAME"), but it
would be trivial to add e.g. setenv ("VENDOR") and
setenv ("PRODUCTID").
> 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
>
Hmm, may be I'll try this.
Thank you very much.
Norbert
More information about the freebsd-hackers
mailing list