Lines Matching refs:data
207 struct mstorage *data; in _send_status() local
213 data = (struct mstorage*)func->user_data; in _send_status()
214 data->ep_in->request.buffer = (rt_uint8_t*)&data->csw_response; in _send_status()
215 data->ep_in->request.size = SIZEOF_CSW; in _send_status()
216 data->ep_in->request.req_type = UIO_REQUEST_WRITE; in _send_status()
217 rt_usbd_io_request(func->device, data->ep_in, &data->ep_in->request); in _send_status()
218 data->status = STAT_CSW; in _send_status()
223 struct mstorage *data; in _test_unit_ready() local
230 data = (struct mstorage*)func->user_data; in _test_unit_ready()
231 data->csw_response.status = 0; in _test_unit_ready()
238 struct mstorage *data; in _allow_removal() local
245 data = (struct mstorage*)func->user_data; in _allow_removal()
246 data->csw_response.status = 0; in _allow_removal()
262 struct mstorage *data; in _inquiry_cmd() local
271 data = (struct mstorage*)func->user_data; in _inquiry_cmd()
272 buf = data->ep_in->buffer; in _inquiry_cmd()
281 data->cb_data_size = MIN(data->cb_data_size, SIZEOF_INQUIRY_CMD); in _inquiry_cmd()
282 data->ep_in->request.buffer = buf; in _inquiry_cmd()
283 data->ep_in->request.size = data->cb_data_size; in _inquiry_cmd()
284 data->ep_in->request.req_type = UIO_REQUEST_WRITE; in _inquiry_cmd()
285 rt_usbd_io_request(func->device, data->ep_in, &data->ep_in->request); in _inquiry_cmd()
286 data->status = STAT_CMD; in _inquiry_cmd()
288 return data->cb_data_size; in _inquiry_cmd()
301 struct mstorage *data; in _request_sense() local
310 data = (struct mstorage*)func->user_data; in _request_sense()
311 buf = (struct request_sense_data *)data->ep_in->buffer; in _request_sense()
324 data->cb_data_size = MIN(data->cb_data_size, SIZEOF_REQUEST_SENSE); in _request_sense()
325 data->ep_in->request.buffer = (rt_uint8_t*)data->ep_in->buffer; in _request_sense()
326 data->ep_in->request.size = data->cb_data_size; in _request_sense()
327 data->ep_in->request.req_type = UIO_REQUEST_WRITE; in _request_sense()
328 rt_usbd_io_request(func->device, data->ep_in, &data->ep_in->request); in _request_sense()
329 data->status = STAT_CMD; in _request_sense()
331 return data->cb_data_size; in _request_sense()
344 struct mstorage *data; in _mode_sense_6() local
353 data = (struct mstorage*)func->user_data; in _mode_sense_6()
354 buf = data->ep_in->buffer; in _mode_sense_6()
360 data->cb_data_size = MIN(data->cb_data_size, SIZEOF_MODE_SENSE_6); in _mode_sense_6()
361 data->ep_in->request.buffer = buf; in _mode_sense_6()
362 data->ep_in->request.size = data->cb_data_size; in _mode_sense_6()
363 data->ep_in->request.req_type = UIO_REQUEST_WRITE; in _mode_sense_6()
364 rt_usbd_io_request(func->device, data->ep_in, &data->ep_in->request); in _mode_sense_6()
365 data->status = STAT_CMD; in _mode_sense_6()
367 return data->cb_data_size; in _mode_sense_6()
380 struct mstorage *data; in _read_capacities() local
390 data = (struct mstorage*)func->user_data; in _read_capacities()
391 buf = data->ep_in->buffer; in _read_capacities()
392 sector_count = data->geometry.sector_count; in _read_capacities()
393 sector_size = data->geometry.bytes_per_sector; in _read_capacities()
405 data->cb_data_size = MIN(data->cb_data_size, SIZEOF_READ_CAPACITIES); in _read_capacities()
406 data->ep_in->request.buffer = buf; in _read_capacities()
407 data->ep_in->request.size = data->cb_data_size; in _read_capacities()
408 data->ep_in->request.req_type = UIO_REQUEST_WRITE; in _read_capacities()
409 rt_usbd_io_request(func->device, data->ep_in, &data->ep_in->request); in _read_capacities()
410 data->status = STAT_CMD; in _read_capacities()
412 return data->cb_data_size; in _read_capacities()
425 struct mstorage *data; in _read_capacity() local
436 data = (struct mstorage*)func->user_data; in _read_capacity()
437 buf = data->ep_in->buffer; in _read_capacity()
438 sector_count = data->geometry.sector_count - 1; /* Last Logical Block Address */ in _read_capacity()
439 sector_size = data->geometry.bytes_per_sector; in _read_capacity()
450 data->cb_data_size = MIN(data->cb_data_size, SIZEOF_READ_CAPACITY); in _read_capacity()
451 data->ep_in->request.buffer = buf; in _read_capacity()
452 data->ep_in->request.size = data->cb_data_size; in _read_capacity()
453 data->ep_in->request.req_type = UIO_REQUEST_WRITE; in _read_capacity()
454 rt_usbd_io_request(func->device, data->ep_in, &data->ep_in->request); in _read_capacity()
455 data->status = STAT_CMD; in _read_capacity()
457 return data->cb_data_size; in _read_capacity()
470 struct mstorage *data; in _read_10() local
477 data = (struct mstorage*)func->user_data; in _read_10()
478 data->block = cbw->cb[2]<<24 | cbw->cb[3]<<16 | cbw->cb[4]<<8 | in _read_10()
480 data->count = cbw->cb[7]<<8 | cbw->cb[8]<<0; in _read_10()
482 RT_ASSERT(data->count < data->geometry.sector_count); in _read_10()
484 data->csw_response.data_reside = data->cb_data_size; in _read_10()
485 size = rt_device_read(data->disk, data->block, data->ep_in->buffer, 1); in _read_10()
491 data->ep_in->request.buffer = data->ep_in->buffer; in _read_10()
492 data->ep_in->request.size = data->geometry.bytes_per_sector; in _read_10()
493 data->ep_in->request.req_type = UIO_REQUEST_WRITE; in _read_10()
494 rt_usbd_io_request(func->device, data->ep_in, &data->ep_in->request); in _read_10()
495 data->status = STAT_SEND; in _read_10()
497 return data->geometry.bytes_per_sector; in _read_10()
510 struct mstorage *data; in _write_10() local
516 data = (struct mstorage*)func->user_data; in _write_10()
518 data->block = cbw->cb[2]<<24 | cbw->cb[3]<<16 | cbw->cb[4]<<8 | in _write_10()
520 data->count = cbw->cb[7]<<8 | cbw->cb[8]; in _write_10()
521 data->csw_response.data_reside = cbw->xfer_len; in _write_10()
522 data->size = data->count * data->geometry.bytes_per_sector; in _write_10()
525 data->count, data->block, data->geometry.sector_count); in _write_10()
527 data->csw_response.data_reside = data->cb_data_size; in _write_10()
529 data->ep_out->request.buffer = data->ep_out->buffer; in _write_10()
530 data->ep_out->request.size = data->geometry.bytes_per_sector; in _write_10()
531 data->ep_out->request.req_type = UIO_REQUEST_READ_FULL; in _write_10()
532 rt_usbd_io_request(func->device, data->ep_out, &data->ep_out->request); in _write_10()
533 data->status = STAT_RECEIVE; in _write_10()
535 return data->geometry.bytes_per_sector; in _write_10()
547 struct mstorage *data; in _verify_10() local
554 data = (struct mstorage*)func->user_data; in _verify_10()
555 data->csw_response.status = 0; in _verify_10()
563 struct mstorage *data; in _start_stop() local
570 data = (struct mstorage*)func->user_data; in _start_stop()
571 data->csw_response.status = 0; in _start_stop()
578 struct mstorage *data; in _ep_in_handler() local
585 data = (struct mstorage*)func->user_data; in _ep_in_handler()
587 switch(data->status) in _ep_in_handler()
590 if(data->ep_in->request.size != SIZEOF_CSW) in _ep_in_handler()
593 rt_usbd_ep_set_stall(func->device, data->ep_in); in _ep_in_handler()
598 data->ep_out->request.buffer = data->ep_out->buffer; in _ep_in_handler()
599 data->ep_out->request.size = SIZEOF_CBW; in _ep_in_handler()
600 data->ep_out->request.req_type = UIO_REQUEST_READ_FULL; in _ep_in_handler()
601 rt_usbd_io_request(func->device, data->ep_out, &data->ep_out->request); in _ep_in_handler()
602 data->status = STAT_CBW; in _ep_in_handler()
606 if(data->csw_response.data_reside == 0xFF) in _ep_in_handler()
608 data->csw_response.data_reside = 0; in _ep_in_handler()
612 data->csw_response.data_reside -= data->ep_in->request.size; in _ep_in_handler()
613 if(data->csw_response.data_reside != 0) in _ep_in_handler()
616 data->csw_response.data_reside, data->ep_in->request.size); in _ep_in_handler()
617 if(data->processing->dir == DIR_OUT) in _ep_in_handler()
619 rt_usbd_ep_set_stall(func->device, data->ep_out); in _ep_in_handler()
628 data->csw_response.data_reside = 0; in _ep_in_handler()
634 data->csw_response.data_reside -= data->ep_in->request.size; in _ep_in_handler()
635 data->count--; in _ep_in_handler()
636 data->block++; in _ep_in_handler()
637 if(data->count > 0 && data->csw_response.data_reside > 0) in _ep_in_handler()
639 if(rt_device_read(data->disk, data->block, data->ep_in->buffer, 1) == 0) in _ep_in_handler()
642 rt_usbd_ep_set_stall(func->device, data->ep_in); in _ep_in_handler()
646 data->ep_in->request.buffer = data->ep_in->buffer; in _ep_in_handler()
647 data->ep_in->request.size = data->geometry.bytes_per_sector; in _ep_in_handler()
648 data->ep_in->request.req_type = UIO_REQUEST_WRITE; in _ep_in_handler()
649 rt_usbd_io_request(func->device, data->ep_in, &data->ep_in->request); in _ep_in_handler()
692 struct mstorage *data; in _cb_len_calc() local
698 data = (struct mstorage*)func->user_data; in _cb_len_calc()
704 data->cb_data_size = cbw->cb[4]; in _cb_len_calc()
707 data->cb_data_size = cbw->cb[4] * data->geometry.bytes_per_sector; in _cb_len_calc()
710 data->cb_data_size = cmd->data_size; in _cb_len_calc()
721 data->cb_data_size = cbw->cb[7]<<8 | cbw->cb[8]; in _cb_len_calc()
724 data->cb_data_size = (cbw->cb[7]<<8 | cbw->cb[8]) * in _cb_len_calc()
725 data->geometry.bytes_per_sector; in _cb_len_calc()
728 data->cb_data_size = cmd->data_size; in _cb_len_calc()
741 data->cb_data_size = cbw->cb[4]; in _cb_len_calc()
756 struct mstorage *data; in _cbw_verify() local
762 data = (struct mstorage*)func->user_data; in _cbw_verify()
769 if(cbw->xfer_len > 0 && data->cb_data_size == 0) in _cbw_verify()
775 if(cbw->xfer_len == 0 && data->cb_data_size > 0) in _cbw_verify()
788 if(cbw->xfer_len > data->cb_data_size) in _cbw_verify()
794 if(cbw->xfer_len < data->cb_data_size) in _cbw_verify()
797 data->cb_data_size = cbw->xfer_len; in _cbw_verify()
798 data->csw_response.status = 1; in _cbw_verify()
807 struct mstorage *data; in _cbw_handler() local
813 data = (struct mstorage*)func->user_data; in _cbw_handler()
814 data->processing = cmd; in _cbw_handler()
828 struct mstorage *data; in _ep_out_handler() local
838 data = (struct mstorage*)func->user_data; in _ep_out_handler()
839 cbw = (struct ustorage_cbw*)data->ep_out->buffer; in _ep_out_handler()
840 if(data->status == STAT_CBW) in _ep_out_handler()
848 data->csw_response.signature = CSW_SIGNATURE; in _ep_out_handler()
849 data->csw_response.tag = cbw->tag; in _ep_out_handler()
850 data->csw_response.data_reside = cbw->xfer_len; in _ep_out_handler()
851 data->csw_response.status = 0; in _ep_out_handler()
853 LOG_D("ep_out reside %d", data->csw_response.data_reside); in _ep_out_handler()
876 else if(data->status == STAT_RECEIVE) in _ep_out_handler()
879 size, data->block, data->size); in _ep_out_handler()
881 data->size -= size; in _ep_out_handler()
882 data->csw_response.data_reside -= size; in _ep_out_handler()
884 rt_device_write(data->disk, data->block, data->ep_out->buffer, 1); in _ep_out_handler()
886 if(data->csw_response.data_reside != 0) in _ep_out_handler()
888 data->ep_out->request.buffer = data->ep_out->buffer; in _ep_out_handler()
889 data->ep_out->request.size = data->geometry.bytes_per_sector; in _ep_out_handler()
890 data->ep_out->request.req_type = UIO_REQUEST_READ_FULL; in _ep_out_handler()
891 rt_usbd_io_request(func->device, data->ep_out, &data->ep_out->request); in _ep_out_handler()
892 data->block ++; in _ep_out_handler()
903 if(data->csw_response.data_reside) in _ep_out_handler()
907 rt_usbd_ep_set_stall(func->device, data->ep_in); in _ep_out_handler()
911 rt_usbd_ep_set_stall(func->device, data->ep_in); in _ep_out_handler()
912 rt_usbd_ep_set_stall(func->device, data->ep_out); in _ep_out_handler()
915 data->csw_response.status = 1; in _ep_out_handler()
984 struct mstorage *data; in _function_enable() local
987 data = (struct mstorage*)func->user_data; in _function_enable()
989 data->disk = rt_device_find(RT_USB_MSTORAGE_DISK_NAME); in _function_enable()
990 if(data->disk == RT_NULL) in _function_enable()
997 dfs_unmount_device(data->disk); in _function_enable()
1000 if(rt_device_open(data->disk, RT_DEVICE_OFLAG_RDWR) != RT_EOK) in _function_enable()
1006 if(rt_device_control(data->disk, RT_DEVICE_CTRL_BLK_GETGEOME, in _function_enable()
1007 (void*)&data->geometry) != RT_EOK) in _function_enable()
1013 data->ep_in->buffer = (rt_uint8_t*)rt_malloc(data->geometry.bytes_per_sector); in _function_enable()
1014 if(data->ep_in->buffer == RT_NULL) in _function_enable()
1019 data->ep_out->buffer = (rt_uint8_t*)rt_malloc(data->geometry.bytes_per_sector); in _function_enable()
1020 if(data->ep_out->buffer == RT_NULL) in _function_enable()
1022 rt_free(data->ep_in->buffer); in _function_enable()
1028 data->ep_out->request.buffer = data->ep_out->buffer; in _function_enable()
1029 data->ep_out->request.size = SIZEOF_CBW; in _function_enable()
1030 data->ep_out->request.req_type = UIO_REQUEST_READ_FULL; in _function_enable()
1031 rt_usbd_io_request(func->device, data->ep_out, &data->ep_out->request); in _function_enable()
1045 struct mstorage *data; in _function_disable() local
1050 data = (struct mstorage*)func->user_data; in _function_disable()
1051 if(data->ep_in->buffer != RT_NULL) in _function_disable()
1053 rt_free(data->ep_in->buffer); in _function_disable()
1054 data->ep_in->buffer = RT_NULL; in _function_disable()
1057 if(data->ep_out->buffer != RT_NULL) in _function_disable()
1059 rt_free(data->ep_out->buffer); in _function_disable()
1060 data->ep_out->buffer = RT_NULL; in _function_disable()
1062 if(data->disk != RT_NULL) in _function_disable()
1064 rt_device_close(data->disk); in _function_disable()
1066 dfs_mount_device(data->disk); in _function_disable()
1068 data->disk = RT_NULL; in _function_disable()
1071 data->status = STAT_CBW; in _function_disable()
1101 struct mstorage *data; in rt_usbd_function_mstorage_create() local
1121 data = (struct mstorage*)rt_malloc(sizeof(struct mstorage)); in rt_usbd_function_mstorage_create()
1122 rt_memset(data, 0, sizeof(struct mstorage)); in rt_usbd_function_mstorage_create()
1123 func->user_data = (void*)data; in rt_usbd_function_mstorage_create()
1139 data->ep_in = rt_usbd_endpoint_new(&mass_desc->ep_in_desc, _ep_in_handler); in rt_usbd_function_mstorage_create()
1140 data->ep_out = rt_usbd_endpoint_new(&mass_desc->ep_out_desc, _ep_out_handler); in rt_usbd_function_mstorage_create()
1143 rt_usbd_altsetting_add_endpoint(setting, data->ep_out); in rt_usbd_function_mstorage_create()
1144 rt_usbd_altsetting_add_endpoint(setting, data->ep_in); in rt_usbd_function_mstorage_create()