Changes in uspace/drv/bus/usb/usbmast/bo_trans.c [3e6a98c5:c53b58e] in mainline
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
uspace/drv/bus/usb/usbmast/bo_trans.c
r3e6a98c5 rc53b58e 65 65 { 66 66 int rc; 67 int retval = EOK; 68 size_t act_size; 69 usb_pipe_t *bulk_in_pipe = &mfun->mdev->usb_dev->pipes[BULK_IN_EP].pipe; 70 usb_pipe_t *bulk_out_pipe = &mfun->mdev->usb_dev->pipes[BULK_OUT_EP].pipe; 71 usb_direction_t ddir; 72 void *dbuf; 73 size_t dbuf_size; 74 75 if (cmd->data_out != NULL && cmd->data_in == NULL) { 76 ddir = USB_DIRECTION_OUT; 77 dbuf = (void *)cmd->data_out; 78 dbuf_size = cmd->data_out_size; 79 } else if (cmd->data_out == NULL && cmd->data_in != NULL) { 67 68 if (cmd->data_in && cmd->data_out) 69 return EINVAL; 70 71 usb_pipe_t *bulk_in_pipe = mfun->mdev->bulk_in_pipe; 72 usb_pipe_t *bulk_out_pipe = mfun->mdev->bulk_out_pipe; 73 74 usb_pipe_t *dpipe = bulk_out_pipe; 75 usb_direction_t ddir = USB_DIRECTION_OUT; 76 size_t dbuf_size = cmd->data_out_size; 77 78 if (cmd->data_in) { 80 79 ddir = USB_DIRECTION_IN; 81 dbuf = cmd->data_in;82 80 dbuf_size = cmd->data_in_size; 83 } else { 84 assert(false); 81 dpipe = bulk_in_pipe; 85 82 } 86 83 … … 100 97 101 98 MASTLOG("Transferring data.\n"); 102 if (ddir == USB_DIRECTION_IN) { 99 if (cmd->data_in) { 100 size_t act_size; 103 101 /* Recieve data from the device. */ 104 rc = usb_pipe_read(bulk_in_pipe, dbuf, dbuf_size, &act_size); 102 rc = usb_pipe_read(dpipe, cmd->data_in, cmd->data_in_size, 103 &act_size); 105 104 MASTLOG("Received %zu bytes (%s): %s.\n", act_size, 106 usb_debug_str_buffer( (uint8_t *) dbuf, act_size, 0),105 usb_debug_str_buffer(cmd->data_in, act_size, 0), 107 106 str_error(rc)); 108 } else { 107 } 108 if (cmd->data_out) { 109 109 /* Send data to the device. */ 110 rc = usb_pipe_write( bulk_out_pipe, dbuf, dbuf_size);111 MASTLOG("Sent %zu bytes (%s): %s.\n", act_size,112 usb_debug_str_buffer( (uint8_t *) dbuf, act_size, 0),110 rc = usb_pipe_write(dpipe, cmd->data_out, cmd->data_out_size); 111 MASTLOG("Sent %zu bytes (%s): %s.\n", cmd->data_out_size, 112 usb_debug_str_buffer(cmd->data_out, cmd->data_out_size, 0), 113 113 str_error(rc)); 114 114 } … … 116 116 if (rc == ESTALL) { 117 117 /* Clear stall condition and continue below to read CSW. */ 118 if (ddir == USB_DIRECTION_IN) { 119 usb_pipe_clear_halt(&mfun->mdev->usb_dev->ctrl_pipe, 120 &mfun->mdev->usb_dev->pipes[BULK_IN_EP].pipe); 121 } else { 122 usb_pipe_clear_halt(&mfun->mdev->usb_dev->ctrl_pipe, 123 &mfun->mdev->usb_dev->pipes[BULK_OUT_EP].pipe); 124 } 118 usb_pipe_clear_halt( 119 usb_device_get_default_pipe(mfun->mdev->usb_dev), dpipe); 125 120 } else if (rc != EOK) { 126 121 return EIO; … … 163 158 case cbs_phase_error: 164 159 MASTLOG("Phase error\n"); 165 r etval= EIO;160 rc = EIO; 166 161 break; 167 162 default: 168 r etval= EIO;169 break; 170 } 171 172 size_t residue = (size_t)uint32_usb2host(csw.dCSWDataResidue);163 rc = EIO; 164 break; 165 } 166 167 const size_t residue = uint32_usb2host(csw.dCSWDataResidue); 173 168 if (residue > dbuf_size) { 174 169 MASTLOG("residue > dbuf_size\n"); … … 184 179 */ 185 180 186 if ( ddir == USB_DIRECTION_IN)181 if (cmd->data_in) 187 182 cmd->rcvd_size = dbuf_size - residue; 188 183 189 return r etval;184 return rc; 190 185 } 191 186 … … 197 192 int usb_massstor_reset(usbmast_dev_t *mdev) 198 193 { 199 return usb_control_request_set(&mdev->usb_dev->ctrl_pipe, 194 return usb_control_request_set( 195 usb_device_get_default_pipe(mdev->usb_dev), 200 196 USB_REQUEST_TYPE_CLASS, USB_REQUEST_RECIPIENT_INTERFACE, 201 0xFF, 0, mdev->usb_dev->interface_no, NULL, 0);197 0xFF, 0, usb_device_get_iface_number(mdev->usb_dev), NULL, 0); 202 198 } 203 199 … … 215 211 */ 216 212 usb_massstor_reset(mdev); 217 usb_pipe_clear_halt( &mdev->usb_dev->ctrl_pipe,218 &mdev->usb_dev->pipes[BULK_IN_EP].pipe);219 usb_pipe_clear_halt( &mdev->usb_dev->ctrl_pipe,220 &mdev->usb_dev->pipes[BULK_OUT_EP].pipe);213 usb_pipe_clear_halt(usb_device_get_default_pipe(mdev->usb_dev), 214 mdev->bulk_in_pipe); 215 usb_pipe_clear_halt(usb_device_get_default_pipe(mdev->usb_dev), 216 mdev->bulk_out_pipe); 221 217 } 222 218 … … 236 232 uint8_t max_lun; 237 233 size_t data_recv_len; 238 int rc = usb_control_request_get(&mdev->usb_dev->ctrl_pipe, 234 int rc = usb_control_request_get( 235 usb_device_get_default_pipe(mdev->usb_dev), 239 236 USB_REQUEST_TYPE_CLASS, USB_REQUEST_RECIPIENT_INTERFACE, 240 0xFE, 0, mdev->usb_dev->interface_no, &max_lun, 1, &data_recv_len); 237 0xFE, 0, usb_device_get_iface_number(mdev->usb_dev), &max_lun, 1, 238 &data_recv_len); 241 239 if (rc != EOK) { 242 240 return rc;
Note:
See TracChangeset
for help on using the changeset viewer.