1619 case CCID_REQUEST_RESET_PARAMS:
1620 case CCID_REQUEST_SET_PARAMS:
1621 rtype = CCID_RESPONSE_PARAMETERS;
1622 break;
1623
1624 case CCID_REQUEST_ESCAPE:
1625 rtype = CCID_RESPONSE_ESCAPE;
1626 break;
1627
1628 case CCID_REQUEST_DATA_CLOCK:
1629 rtype = CCID_RESPONSE_DATA_CLOCK;
1630 break;
1631 default:
1632 return (EINVAL);
1633 }
1634
1635 if (block) {
1636 kmflag = KM_SLEEP;
1637 usbflag = USB_FLAGS_SLEEP;
1638 } else {
1639 kmflag = KM_NOSLEEP | KM_NORMALPRI;
1640 usbflag = 0;
1641 }
1642
1643 if (datasz + sizeof (ccid_header_t) < datasz)
1644 return (EINVAL);
1645 if (datasz + sizeof (ccid_header_t) > ccid->ccid_bufsize)
1646 return (EINVAL);
1647
1648 cc = kmem_zalloc(sizeof (ccid_command_t), kmflag);
1649 if (cc == NULL)
1650 return (ENOMEM);
1651
1652 allocsz = datasz + sizeof (ccid_header_t);
1653 if (datamp == NULL) {
1654 cc->cc_ubrp = usb_alloc_bulk_req(ccid->ccid_dip, allocsz,
1655 usbflag);
1656 } else {
1657 cc->cc_ubrp = usb_alloc_bulk_req(ccid->ccid_dip, 0, usbflag);
1658 }
1659 if (cc->cc_ubrp == NULL) {
|
1619 case CCID_REQUEST_RESET_PARAMS:
1620 case CCID_REQUEST_SET_PARAMS:
1621 rtype = CCID_RESPONSE_PARAMETERS;
1622 break;
1623
1624 case CCID_REQUEST_ESCAPE:
1625 rtype = CCID_RESPONSE_ESCAPE;
1626 break;
1627
1628 case CCID_REQUEST_DATA_CLOCK:
1629 rtype = CCID_RESPONSE_DATA_CLOCK;
1630 break;
1631 default:
1632 return (EINVAL);
1633 }
1634
1635 if (block) {
1636 kmflag = KM_SLEEP;
1637 usbflag = USB_FLAGS_SLEEP;
1638 } else {
1639 kmflag = KM_NOSLEEP_LAZY;
1640 usbflag = 0;
1641 }
1642
1643 if (datasz + sizeof (ccid_header_t) < datasz)
1644 return (EINVAL);
1645 if (datasz + sizeof (ccid_header_t) > ccid->ccid_bufsize)
1646 return (EINVAL);
1647
1648 cc = kmem_zalloc(sizeof (ccid_command_t), kmflag);
1649 if (cc == NULL)
1650 return (ENOMEM);
1651
1652 allocsz = datasz + sizeof (ccid_header_t);
1653 if (datamp == NULL) {
1654 cc->cc_ubrp = usb_alloc_bulk_req(ccid->ccid_dip, allocsz,
1655 usbflag);
1656 } else {
1657 cc->cc_ubrp = usb_alloc_bulk_req(ccid->ccid_dip, 0, usbflag);
1658 }
1659 if (cc->cc_ubrp == NULL) {
|