Changeset 3937bda in mainline


Ignore:
Timestamp:
2011-02-12T21:08:25Z (13 years ago)
Author:
Vojtech Horky <vojtechhorky@…>
Branches:
lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
Children:
dc04868
Parents:
6b1931b
Message:

Allow control write transfers with no data stage

Location:
uspace/lib
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • uspace/lib/drv/generic/remote_usbhc.c

    r6b1931b r3937bda  
    540540                .endpoint = DEV_IPC_GET_ARG2(*call)
    541541        };
     542        size_t data_buffer_len = DEV_IPC_GET_ARG3(*call);
    542543
    543544        int rc;
     
    546547        void *data_buffer = NULL;
    547548        size_t setup_packet_len = 0;
    548         size_t data_buffer_len = 0;
    549549
    550550        rc = async_data_write_accept(&setup_packet, false,
     
    554554                return;
    555555        }
    556         rc = async_data_write_accept(&data_buffer, false,
    557             1, USB_MAX_PAYLOAD_SIZE, 0, &data_buffer_len);
    558         if (rc != EOK) {
    559                 async_answer_0(callid, rc);
    560                 free(setup_packet);
    561                 return;
     556
     557        if (data_buffer_len > 0) {
     558                rc = async_data_write_accept(&data_buffer, false,
     559                    1, USB_MAX_PAYLOAD_SIZE, 0, &data_buffer_len);
     560                if (rc != EOK) {
     561                        async_answer_0(callid, rc);
     562                        free(setup_packet);
     563                        return;
     564                }
    562565        }
    563566
     
    596599        }
    597600
    598         size_t data_len = DEV_IPC_GET_ARG3(*call);
    599601        usb_target_t target = {
    600602                .address = DEV_IPC_GET_ARG1(*call),
     
    606608        void *setup_packet = NULL;
    607609        size_t setup_packet_len = 0;
     610        size_t data_len = 0;
    608611
    609612        rc = async_data_write_accept(&setup_packet, false,
  • uspace/lib/usb/src/usbdrv.c

    r6b1931b r3937bda  
    464464        assert(setup_packet != NULL);
    465465        assert(setup_packet_size > 0);
    466         assert(buffer != NULL);
    467         assert(buffer_size > 0);
     466        assert(((buffer != NULL) && (buffer_size > 0))
     467            || ((buffer == NULL) && (buffer_size == 0)));
    468468        assert(handle != NULL);
    469469
     
    494494        }
    495495
    496         rc = async_data_write_start(phone, buffer, buffer_size);
    497         if (rc != EOK) {
    498                 async_wait_for(transfer->request, NULL);
    499                 return rc;
     496        if (buffer_size > 0) {
     497                rc = async_data_write_start(phone, buffer, buffer_size);
     498                if (rc != EOK) {
     499                        async_wait_for(transfer->request, NULL);
     500                        return rc;
     501                }
    500502        }
    501503
Note: See TracChangeset for help on using the changeset viewer.