aboutsummaryrefslogtreecommitdiffstats
path: root/include/linux/usb.h
diff options
context:
space:
mode:
Diffstat (limited to 'include/linux/usb.h')
-rw-r--r--include/linux/usb.h142
1 files changed, 131 insertions, 11 deletions
diff --git a/include/linux/usb.h b/include/linux/usb.h
index e5cb1690975a..e732e024a141 100644
--- a/include/linux/usb.h
+++ b/include/linux/usb.h
@@ -495,17 +495,137 @@ static inline int usb_make_path (struct usb_device *dev, char *buf,
495 495
496/*-------------------------------------------------------------------------*/ 496/*-------------------------------------------------------------------------*/
497 497
498extern int usb_endpoint_dir_in(const struct usb_endpoint_descriptor *epd); 498/**
499extern int usb_endpoint_dir_out(const struct usb_endpoint_descriptor *epd); 499 * usb_endpoint_dir_in - check if the endpoint has IN direction
500extern int usb_endpoint_xfer_bulk(const struct usb_endpoint_descriptor *epd); 500 * @epd: endpoint to be checked
501extern int usb_endpoint_xfer_int(const struct usb_endpoint_descriptor *epd); 501 *
502extern int usb_endpoint_xfer_isoc(const struct usb_endpoint_descriptor *epd); 502 * Returns true if the endpoint is of type IN, otherwise it returns false.
503extern int usb_endpoint_is_bulk_in(const struct usb_endpoint_descriptor *epd); 503 */
504extern int usb_endpoint_is_bulk_out(const struct usb_endpoint_descriptor *epd); 504static inline int usb_endpoint_dir_in(const struct usb_endpoint_descriptor *epd)
505extern int usb_endpoint_is_int_in(const struct usb_endpoint_descriptor *epd); 505{
506extern int usb_endpoint_is_int_out(const struct usb_endpoint_descriptor *epd); 506 return ((epd->bEndpointAddress & USB_ENDPOINT_DIR_MASK) == USB_DIR_IN);
507extern int usb_endpoint_is_isoc_in(const struct usb_endpoint_descriptor *epd); 507}
508extern int usb_endpoint_is_isoc_out(const struct usb_endpoint_descriptor *epd); 508
509/**
510 * usb_endpoint_dir_out - check if the endpoint has OUT direction
511 * @epd: endpoint to be checked
512 *
513 * Returns true if the endpoint is of type OUT, otherwise it returns false.
514 */
515static inline int usb_endpoint_dir_out(const struct usb_endpoint_descriptor *epd)
516{
517 return ((epd->bEndpointAddress & USB_ENDPOINT_DIR_MASK) == USB_DIR_OUT);
518}
519
520/**
521 * usb_endpoint_xfer_bulk - check if the endpoint has bulk transfer type
522 * @epd: endpoint to be checked
523 *
524 * Returns true if the endpoint is of type bulk, otherwise it returns false.
525 */
526static inline int usb_endpoint_xfer_bulk(const struct usb_endpoint_descriptor *epd)
527{
528 return ((epd->bmAttributes & USB_ENDPOINT_XFERTYPE_MASK) ==
529 USB_ENDPOINT_XFER_BULK);
530}
531
532/**
533 * usb_endpoint_xfer_int - check if the endpoint has interrupt transfer type
534 * @epd: endpoint to be checked
535 *
536 * Returns true if the endpoint is of type interrupt, otherwise it returns
537 * false.
538 */
539static inline int usb_endpoint_xfer_int(const struct usb_endpoint_descriptor *epd)
540{
541 return ((epd->bmAttributes & USB_ENDPOINT_XFERTYPE_MASK) ==
542 USB_ENDPOINT_XFER_INT);
543}
544
545/**
546 * usb_endpoint_xfer_isoc - check if the endpoint has isochronous transfer type
547 * @epd: endpoint to be checked
548 *
549 * Returns true if the endpoint is of type isochronous, otherwise it returns
550 * false.
551 */
552static inline int usb_endpoint_xfer_isoc(const struct usb_endpoint_descriptor *epd)
553{
554 return ((epd->bmAttributes & USB_ENDPOINT_XFERTYPE_MASK) ==
555 USB_ENDPOINT_XFER_ISOC);
556}
557
558/**
559 * usb_endpoint_is_bulk_in - check if the endpoint is bulk IN
560 * @epd: endpoint to be checked
561 *
562 * Returns true if the endpoint has bulk transfer type and IN direction,
563 * otherwise it returns false.
564 */
565static inline int usb_endpoint_is_bulk_in(const struct usb_endpoint_descriptor *epd)
566{
567 return (usb_endpoint_xfer_bulk(epd) && usb_endpoint_dir_in(epd));
568}
569
570/**
571 * usb_endpoint_is_bulk_out - check if the endpoint is bulk OUT
572 * @epd: endpoint to be checked
573 *
574 * Returns true if the endpoint has bulk transfer type and OUT direction,
575 * otherwise it returns false.
576 */
577static inline int usb_endpoint_is_bulk_out(const struct usb_endpoint_descriptor *epd)
578{
579 return (usb_endpoint_xfer_bulk(epd) && usb_endpoint_dir_out(epd));
580}
581
582/**
583 * usb_endpoint_is_int_in - check if the endpoint is interrupt IN
584 * @epd: endpoint to be checked
585 *
586 * Returns true if the endpoint has interrupt transfer type and IN direction,
587 * otherwise it returns false.
588 */
589static inline int usb_endpoint_is_int_in(const struct usb_endpoint_descriptor *epd)
590{
591 return (usb_endpoint_xfer_int(epd) && usb_endpoint_dir_in(epd));
592}
593
594/**
595 * usb_endpoint_is_int_out - check if the endpoint is interrupt OUT
596 * @epd: endpoint to be checked
597 *
598 * Returns true if the endpoint has interrupt transfer type and OUT direction,
599 * otherwise it returns false.
600 */
601static inline int usb_endpoint_is_int_out(const struct usb_endpoint_descriptor *epd)
602{
603 return (usb_endpoint_xfer_int(epd) && usb_endpoint_dir_out(epd));
604}
605
606/**
607 * usb_endpoint_is_isoc_in - check if the endpoint is isochronous IN
608 * @epd: endpoint to be checked
609 *
610 * Returns true if the endpoint has isochronous transfer type and IN direction,
611 * otherwise it returns false.
612 */
613static inline int usb_endpoint_is_isoc_in(const struct usb_endpoint_descriptor *epd)
614{
615 return (usb_endpoint_xfer_isoc(epd) && usb_endpoint_dir_in(epd));
616}
617
618/**
619 * usb_endpoint_is_isoc_out - check if the endpoint is isochronous OUT
620 * @epd: endpoint to be checked
621 *
622 * Returns true if the endpoint has isochronous transfer type and OUT direction,
623 * otherwise it returns false.
624 */
625static inline int usb_endpoint_is_isoc_out(const struct usb_endpoint_descriptor *epd)
626{
627 return (usb_endpoint_xfer_isoc(epd) && usb_endpoint_dir_out(epd));
628}
509 629
510/*-------------------------------------------------------------------------*/ 630/*-------------------------------------------------------------------------*/
511 631