libusb10.c (0f2c706643ff211ce1e1eb0cfbc3c05bc67f2311) | libusb10.c (5b40d9601c72fbb04f32437d529dbf51252dc31e) |
---|---|
1/* $FreeBSD$ */ 2/*- 3 * Copyright (c) 2009 Sylvestre Gallon. All rights reserved. 4 * Copyright (c) 2009 Hans Petter Selasky. All rights reserved. 5 * 6 * Redistribution and use in source and binary forms, with or without 7 * modification, are permitted provided that the following conditions 8 * are met: --- 623 unchanged lines hidden (view full) --- 632 633 return (err ? LIBUSB_ERROR_INVALID_PARAM : 0); 634} 635 636int 637libusb_claim_interface(struct libusb20_device *pdev, int interface_number) 638{ 639 libusb_device *dev; | 1/* $FreeBSD$ */ 2/*- 3 * Copyright (c) 2009 Sylvestre Gallon. All rights reserved. 4 * Copyright (c) 2009 Hans Petter Selasky. All rights reserved. 5 * 6 * Redistribution and use in source and binary forms, with or without 7 * modification, are permitted provided that the following conditions 8 * are met: --- 623 unchanged lines hidden (view full) --- 632 633 return (err ? LIBUSB_ERROR_INVALID_PARAM : 0); 634} 635 636int 637libusb_claim_interface(struct libusb20_device *pdev, int interface_number) 638{ 639 libusb_device *dev; |
640 int err = 0; |
|
640 641 dev = libusb_get_device(pdev); 642 if (dev == NULL) 643 return (LIBUSB_ERROR_INVALID_PARAM); 644 645 if (interface_number < 0 || interface_number > 31) 646 return (LIBUSB_ERROR_INVALID_PARAM); 647 | 641 642 dev = libusb_get_device(pdev); 643 if (dev == NULL) 644 return (LIBUSB_ERROR_INVALID_PARAM); 645 646 if (interface_number < 0 || interface_number > 31) 647 return (LIBUSB_ERROR_INVALID_PARAM); 648 |
649 if (pdev->auto_detach != 0) { 650 err = libusb_detach_kernel_driver(pdev, interface_number); 651 if (err != 0) 652 goto done; 653 } 654 |
|
648 CTX_LOCK(dev->ctx); 649 dev->claimed_interfaces |= (1 << interface_number); 650 CTX_UNLOCK(dev->ctx); | 655 CTX_LOCK(dev->ctx); 656 dev->claimed_interfaces |= (1 << interface_number); 657 CTX_UNLOCK(dev->ctx); |
651 652 return (0); | 658done: 659 return (err); |
653} 654 655int 656libusb_release_interface(struct libusb20_device *pdev, int interface_number) 657{ 658 libusb_device *dev; 659 int err = 0; 660 661 dev = libusb_get_device(pdev); 662 if (dev == NULL) 663 return (LIBUSB_ERROR_INVALID_PARAM); 664 665 if (interface_number < 0 || interface_number > 31) 666 return (LIBUSB_ERROR_INVALID_PARAM); 667 | 660} 661 662int 663libusb_release_interface(struct libusb20_device *pdev, int interface_number) 664{ 665 libusb_device *dev; 666 int err = 0; 667 668 dev = libusb_get_device(pdev); 669 if (dev == NULL) 670 return (LIBUSB_ERROR_INVALID_PARAM); 671 672 if (interface_number < 0 || interface_number > 31) 673 return (LIBUSB_ERROR_INVALID_PARAM); 674 |
675 if (pdev->auto_detach != 0) { 676 err = libusb_attach_kernel_driver(pdev, interface_number); 677 if (err != 0) 678 goto done; 679 } 680 |
|
668 CTX_LOCK(dev->ctx); 669 if (!(dev->claimed_interfaces & (1 << interface_number))) 670 err = LIBUSB_ERROR_NOT_FOUND; | 681 CTX_LOCK(dev->ctx); 682 if (!(dev->claimed_interfaces & (1 << interface_number))) 683 err = LIBUSB_ERROR_NOT_FOUND; |
671 672 if (!err) | 684 else |
673 dev->claimed_interfaces &= ~(1 << interface_number); 674 CTX_UNLOCK(dev->ctx); | 685 dev->claimed_interfaces &= ~(1 << interface_number); 686 CTX_UNLOCK(dev->ctx); |
687done: |
|
675 return (err); 676} 677 678int 679libusb_set_interface_alt_setting(struct libusb20_device *pdev, 680 int interface_number, int alternate_setting) 681{ 682 libusb_device *dev; --- 185 unchanged lines hidden (view full) --- 868libusb_attach_kernel_driver(struct libusb20_device *pdev, int interface) 869{ 870 if (pdev == NULL) 871 return (LIBUSB_ERROR_INVALID_PARAM); 872 /* stub - currently not supported by libusb20 */ 873 return (0); 874} 875 | 688 return (err); 689} 690 691int 692libusb_set_interface_alt_setting(struct libusb20_device *pdev, 693 int interface_number, int alternate_setting) 694{ 695 libusb_device *dev; --- 185 unchanged lines hidden (view full) --- 881libusb_attach_kernel_driver(struct libusb20_device *pdev, int interface) 882{ 883 if (pdev == NULL) 884 return (LIBUSB_ERROR_INVALID_PARAM); 885 /* stub - currently not supported by libusb20 */ 886 return (0); 887} 888 |
889int 890libusb_set_auto_detach_kernel_driver(libusb_device_handle *dev, int enable) 891{ 892 dev->auto_detach = (enable ? 1 : 0); 893} 894 |
|
876/* Asynchronous device I/O */ 877 878struct libusb_transfer * 879libusb_alloc_transfer(int iso_packets) 880{ 881 struct libusb_transfer *uxfer; 882 struct libusb_super_transfer *sxfer; 883 int len; --- 725 unchanged lines hidden --- | 895/* Asynchronous device I/O */ 896 897struct libusb_transfer * 898libusb_alloc_transfer(int iso_packets) 899{ 900 struct libusb_transfer *uxfer; 901 struct libusb_super_transfer *sxfer; 902 int len; --- 725 unchanged lines hidden --- |