[BACK]Return to usbdi_util.c CVS log [TXT][DIR] Up to [cvs.NetBSD.org] / src / sys / dev / usb

Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.

Diff for /src/sys/dev/usb/usbdi_util.c between version 1.34 and 1.34.2.1

version 1.34, 2001/07/04 16:23:40 version 1.34.2.1, 2002/01/10 19:59:10
Line 38 
Line 38 
  * POSSIBILITY OF SUCH DAMAGE.   * POSSIBILITY OF SUCH DAMAGE.
  */   */
   
   #include <sys/cdefs.h>
   __KERNEL_RCSID(0, "$NetBSD$");
   
 #include <sys/param.h>  #include <sys/param.h>
 #include <sys/systm.h>  #include <sys/systm.h>
 #include <sys/kernel.h>  #include <sys/kernel.h>
Line 219  usbd_set_port_feature(usbd_device_handle
Line 222  usbd_set_port_feature(usbd_device_handle
         return (usbd_do_request(dev, &req, 0));          return (usbd_do_request(dev, &req, 0));
 }  }
   
   usbd_status
   usbd_get_protocol(usbd_interface_handle iface, u_int8_t *report)
   {
           usb_interface_descriptor_t *id = usbd_get_interface_descriptor(iface);
           usbd_device_handle dev;
           usb_device_request_t req;
   
           DPRINTFN(4, ("usbd_get_protocol: iface=%p, endpt=%d\n",
                        iface, id->bInterfaceNumber));
           if (id == NULL)
                   return (USBD_IOERROR);
           usbd_interface2device_handle(iface, &dev);
           req.bmRequestType = UT_READ_CLASS_INTERFACE;
           req.bRequest = UR_GET_PROTOCOL;
           USETW(req.wValue, 0);
           USETW(req.wIndex, id->bInterfaceNumber);
           USETW(req.wLength, 1);
           return (usbd_do_request(dev, &req, report));
   }
   
 usbd_status  usbd_status
 usbd_set_protocol(usbd_interface_handle iface, int report)  usbd_set_protocol(usbd_interface_handle iface, int report)
Line 226  usbd_set_protocol(usbd_interface_handle 
Line 248  usbd_set_protocol(usbd_interface_handle 
         usb_interface_descriptor_t *id = usbd_get_interface_descriptor(iface);          usb_interface_descriptor_t *id = usbd_get_interface_descriptor(iface);
         usbd_device_handle dev;          usbd_device_handle dev;
         usb_device_request_t req;          usb_device_request_t req;
         usbd_status err;  
   
         DPRINTFN(4, ("usbd_set_protocol: iface=%p, report=%d, endpt=%d\n",          DPRINTFN(4, ("usbd_set_protocol: iface=%p, report=%d, endpt=%d\n",
                      iface, report, id->bInterfaceNumber));                       iface, report, id->bInterfaceNumber));
         if (id == NULL)          if (id == NULL)
                 return (USBD_IOERROR);                  return (USBD_IOERROR);
         err = usbd_interface2device_handle(iface, &dev);          usbd_interface2device_handle(iface, &dev);
         if (err)  
                 return (err);  
         req.bmRequestType = UT_WRITE_CLASS_INTERFACE;          req.bmRequestType = UT_WRITE_CLASS_INTERFACE;
         req.bRequest = UR_SET_PROTOCOL;          req.bRequest = UR_SET_PROTOCOL;
         USETW(req.wValue, report);          USETW(req.wValue, report);
Line 250  usbd_set_report(usbd_interface_handle if
Line 269  usbd_set_report(usbd_interface_handle if
         usb_interface_descriptor_t *ifd = usbd_get_interface_descriptor(iface);          usb_interface_descriptor_t *ifd = usbd_get_interface_descriptor(iface);
         usbd_device_handle dev;          usbd_device_handle dev;
         usb_device_request_t req;          usb_device_request_t req;
         usbd_status err;  
   
         DPRINTFN(4, ("usbd_set_report: len=%d\n", len));          DPRINTFN(4, ("usbd_set_report: len=%d\n", len));
         if (ifd == NULL)          if (ifd == NULL)
                 return (USBD_IOERROR);                  return (USBD_IOERROR);
         err = usbd_interface2device_handle(iface, &dev);          usbd_interface2device_handle(iface, &dev);
         if (err)  
                 return (err);  
         req.bmRequestType = UT_WRITE_CLASS_INTERFACE;          req.bmRequestType = UT_WRITE_CLASS_INTERFACE;
         req.bRequest = UR_SET_REPORT;          req.bRequest = UR_SET_REPORT;
         USETW2(req.wValue, type, id);          USETW2(req.wValue, type, id);
Line 273  usbd_set_report_async(usbd_interface_han
Line 289  usbd_set_report_async(usbd_interface_han
         usb_interface_descriptor_t *ifd = usbd_get_interface_descriptor(iface);          usb_interface_descriptor_t *ifd = usbd_get_interface_descriptor(iface);
         usbd_device_handle dev;          usbd_device_handle dev;
         usb_device_request_t req;          usb_device_request_t req;
         usbd_status err;  
   
         DPRINTFN(4, ("usbd_set_report_async: len=%d\n", len));          DPRINTFN(4, ("usbd_set_report_async: len=%d\n", len));
         if (ifd == NULL)          if (ifd == NULL)
                 return (USBD_IOERROR);                  return (USBD_IOERROR);
         err = usbd_interface2device_handle(iface, &dev);          usbd_interface2device_handle(iface, &dev);
         if (err)  
                 return (err);  
         req.bmRequestType = UT_WRITE_CLASS_INTERFACE;          req.bmRequestType = UT_WRITE_CLASS_INTERFACE;
         req.bRequest = UR_SET_REPORT;          req.bRequest = UR_SET_REPORT;
         USETW2(req.wValue, type, id);          USETW2(req.wValue, type, id);
Line 296  usbd_get_report(usbd_interface_handle if
Line 309  usbd_get_report(usbd_interface_handle if
         usb_interface_descriptor_t *ifd = usbd_get_interface_descriptor(iface);          usb_interface_descriptor_t *ifd = usbd_get_interface_descriptor(iface);
         usbd_device_handle dev;          usbd_device_handle dev;
         usb_device_request_t req;          usb_device_request_t req;
         usbd_status err;  
   
         DPRINTFN(4, ("usbd_get_report: len=%d\n", len));          DPRINTFN(4, ("usbd_get_report: len=%d\n", len));
         if (ifd == NULL)          if (ifd == NULL)
                 return (USBD_IOERROR);                  return (USBD_IOERROR);
         err = usbd_interface2device_handle(iface, &dev);          usbd_interface2device_handle(iface, &dev);
         if (err)  
                 return (err);  
         req.bmRequestType = UT_READ_CLASS_INTERFACE;          req.bmRequestType = UT_READ_CLASS_INTERFACE;
         req.bRequest = UR_GET_REPORT;          req.bRequest = UR_GET_REPORT;
         USETW2(req.wValue, type, id);          USETW2(req.wValue, type, id);
Line 318  usbd_set_idle(usbd_interface_handle ifac
Line 328  usbd_set_idle(usbd_interface_handle ifac
         usb_interface_descriptor_t *ifd = usbd_get_interface_descriptor(iface);          usb_interface_descriptor_t *ifd = usbd_get_interface_descriptor(iface);
         usbd_device_handle dev;          usbd_device_handle dev;
         usb_device_request_t req;          usb_device_request_t req;
         usbd_status err;  
   
         DPRINTFN(4, ("usbd_set_idle: %d %d\n", duration, id));          DPRINTFN(4, ("usbd_set_idle: %d %d\n", duration, id));
         if (ifd == NULL)          if (ifd == NULL)
                 return (USBD_IOERROR);                  return (USBD_IOERROR);
         err = usbd_interface2device_handle(iface, &dev);          usbd_interface2device_handle(iface, &dev);
         if (err)  
                 return (err);  
         req.bmRequestType = UT_WRITE_CLASS_INTERFACE;          req.bmRequestType = UT_WRITE_CLASS_INTERFACE;
         req.bRequest = UR_SET_IDLE;          req.bRequest = UR_SET_IDLE;
         USETW2(req.wValue, duration, id);          USETW2(req.wValue, duration, id);
Line 335  usbd_set_idle(usbd_interface_handle ifac
Line 342  usbd_set_idle(usbd_interface_handle ifac
 }  }
   
 usbd_status  usbd_status
 usbd_get_report_descriptor(usbd_device_handle dev, int ifcno, int repid,  usbd_get_report_descriptor(usbd_device_handle dev, int ifcno,
                            int size, void *d)                             int size, void *d)
 {  {
         usb_device_request_t req;          usb_device_request_t req;
   
         req.bmRequestType = UT_READ_INTERFACE;          req.bmRequestType = UT_READ_INTERFACE;
         req.bRequest = UR_GET_DESCRIPTOR;          req.bRequest = UR_GET_DESCRIPTOR;
         USETW2(req.wValue, UDESC_REPORT, repid);          USETW2(req.wValue, UDESC_REPORT, 0); /* report id should be 0 */
         USETW(req.wIndex, ifcno);          USETW(req.wIndex, ifcno);
         USETW(req.wLength, size);          USETW(req.wLength, size);
         return (usbd_do_request(dev, &req, d));          return (usbd_do_request(dev, &req, d));
Line 356  usbd_get_hid_descriptor(usbd_interface_h
Line 363  usbd_get_hid_descriptor(usbd_interface_h
         usb_config_descriptor_t *cdesc;          usb_config_descriptor_t *cdesc;
         usb_hid_descriptor_t *hd;          usb_hid_descriptor_t *hd;
         char *p, *end;          char *p, *end;
         usbd_status err;  
   
         if (idesc == NULL)          if (idesc == NULL)
                 return (0);                  return (0);
         err = usbd_interface2device_handle(ifc, &dev);           usbd_interface2device_handle(ifc, &dev);
         if (err)  
                 return (0);  
         cdesc = usbd_get_config_descriptor(dev);          cdesc = usbd_get_config_descriptor(dev);
   
         p = (char *)idesc + idesc->bLength;          p = (char *)idesc + idesc->bLength;
Line 379  usbd_get_hid_descriptor(usbd_interface_h
Line 383  usbd_get_hid_descriptor(usbd_interface_h
 }  }
   
 usbd_status  usbd_status
 usbd_alloc_report_desc(usbd_interface_handle ifc, void **descp, int *sizep,  usbd_read_report_desc(usbd_interface_handle ifc, void **descp, int *sizep,
                        usb_malloc_type mem)                         usb_malloc_type mem)
 {  {
         usb_interface_descriptor_t *id;          usb_interface_descriptor_t *id;
Line 387  usbd_alloc_report_desc(usbd_interface_ha
Line 391  usbd_alloc_report_desc(usbd_interface_ha
         usbd_device_handle dev;          usbd_device_handle dev;
         usbd_status err;          usbd_status err;
   
         err = usbd_interface2device_handle(ifc, &dev);          usbd_interface2device_handle(ifc, &dev);
         if (err)  
                 return (err);  
         id = usbd_get_interface_descriptor(ifc);          id = usbd_get_interface_descriptor(ifc);
         if (id == NULL)          if (id == NULL)
                 return (USBD_INVAL);                  return (USBD_INVAL);
Line 400  usbd_alloc_report_desc(usbd_interface_ha
Line 402  usbd_alloc_report_desc(usbd_interface_ha
         *descp = malloc(*sizep, mem, M_NOWAIT);          *descp = malloc(*sizep, mem, M_NOWAIT);
         if (*descp == NULL)          if (*descp == NULL)
                 return (USBD_NOMEM);                  return (USBD_NOMEM);
         /* XXX should not use 0 Report ID */          err = usbd_get_report_descriptor(dev, id->bInterfaceNumber,
         err = usbd_get_report_descriptor(dev, id->bInterfaceNumber, 0,                                           *sizep, *descp);
                                        *sizep, *descp);  
         if (err) {          if (err) {
                 free(*descp, mem);                  free(*descp, mem);
                 *descp = NULL;                  *descp = NULL;
Line 482  usb_detach_wakeup(device_ptr_t dv)
Line 483  usb_detach_wakeup(device_ptr_t dv)
         DPRINTF(("usb_detach_wakeup: for %s\n", USBDEVPTRNAME(dv)));          DPRINTF(("usb_detach_wakeup: for %s\n", USBDEVPTRNAME(dv)));
         wakeup(dv);          wakeup(dv);
 }  }
   
   usb_descriptor_t *
   usb_find_desc(usbd_device_handle dev, int type)
   {
           usb_descriptor_t *desc;
           usb_config_descriptor_t *cd = usbd_get_config_descriptor(dev);
           uByte *p = (uByte *)cd;
           uByte *end = p + UGETW(cd->wTotalLength);
   
           while (p < end) {
                   desc = (usb_descriptor_t *)p;
                   if (desc->bDescriptorType == type)
                           return (desc);
                   p += desc->bLength;
           }
   
           return (NULL);
   }

Legend:
Removed from v.1.34  
changed lines
  Added in v.1.34.2.1

CVSweb <webmaster@jp.NetBSD.org>