Lines Matching refs:info

73 update_capacity(cd_driver_info *info)
77 scsi_ccb *ccb = info->scsi->alloc_ccb(info->scsi_device);
82 info->scsi_periph_device, ccb);
84 info->scsi->free_ccb(ccb);
94 test_capacity(cd_driver_info *info)
97 const uint32 blockSize = info->block_size;
102 info->original_capacity);
104 info->capacity = info->original_capacity;
107 uint64 offset = info->original_capacity;
113 scsi_ccb *request = info->scsi->alloc_ccb(info->scsi_device);
144 while (offset > info->original_capacity - 75) {
146 status_t status = sSCSIPeripheral->read_write(info->scsi_periph_device,
166 info->capacity = errorBlock;
180 info->scsi->free_ccb(request);
187 if (info->capacity != info->original_capacity) {
189 " blocks.\n", info->original_capacity, info->capacity);
199 cd_driver_info *info = handle->info;
201 status_t status = update_capacity(info);
205 // info is ignored by the CDPlayer and CDBurner
209 devfs_compute_geometry_size(geometry, info->capacity, info->block_size);
210 geometry->bytes_per_physical_sector = info->physical_block_size;
212 geometry->device_type = info->device_type;
213 geometry->removable = info->removable;
221 geometry->write_once = info->device_type == scsi_dev_WORM;
233 get_toc(cd_driver_info *info, scsi_toc *toc)
243 ccb = info->scsi->alloc_ccb(info->scsi_device);
268 res = sSCSIPeripheral->safe_exec(info->scsi_periph_device, ccb);
286 res = sSCSIPeripheral->safe_exec(info->scsi_periph_device, ccb);
289 info->scsi->free_ccb(ccb);
296 load_eject(cd_driver_info *info, bool load)
300 scsi_ccb *ccb = info->scsi->alloc_ccb(info->scsi_device);
305 info->scsi_periph_device, ccb, load, true);
307 info->scsi->free_ccb(ccb);
314 get_position(cd_driver_info *info, scsi_position *position)
328 return sSCSIPeripheral->simple_exec(info->scsi_periph_device,
334 get_set_volume(cd_driver_info *info, scsi_volume *volume, bool set)
354 res = sSCSIPeripheral->simple_exec(info->scsi_periph_device, &cmd,
377 res = sSCSIPeripheral->simple_exec(info->scsi_periph_device, &cmd,
437 res = sSCSIPeripheral->simple_exec(info->scsi_periph_device,
448 play_msf(cd_driver_info *info, const scsi_play_position *position)
466 return sSCSIPeripheral->simple_exec(info->scsi_periph_device,
473 play_track_index(cd_driver_info *info, const scsi_play_track *buf)
485 res = get_toc(info, &generic_toc);
517 return play_msf(info, &position);
522 stop_audio(cd_driver_info *info)
531 return sSCSIPeripheral->simple_exec(info->scsi_periph_device,
537 pause_resume(cd_driver_info *info, bool resume)
547 return sSCSIPeripheral->simple_exec(info->scsi_periph_device,
553 scan(cd_driver_info *info, const scsi_scan *buf)
561 status_t res = get_position(info, &curPos);
579 return play_msf(info, &playPos);
596 return sSCSIPeripheral->simple_exec(info->scsi_periph_device,
602 read_cd(cd_driver_info *info, const scsi_read_cd *readCD)
612 ccb = info->scsi->alloc_ccb(info->scsi_device);
651 res = sSCSIPeripheral->safe_exec(info->scsi_periph_device, ccb);
653 info->scsi->free_ccb(ccb);
662 cd_driver_info* info = (cd_driver_info*)cookie;
667 status_t status = sSCSIPeripheral->io(info->scsi_periph_device, operation,
670 info->io_scheduler->OperationCompleted(operation, status, bytesTransferred);
681 cd_driver_info* info = (cd_driver_info*)_info;
683 update_capacity(info);
687 *_cookie = info;
695 cd_driver_info* info = (cd_driver_info*)_cookie;
697 delete info->io_scheduler;
698 delete info->dma_resource;
699 info->io_scheduler = NULL;
700 info->dma_resource = NULL;
707 cd_driver_info* info = (cd_driver_info*)_info;
713 handle->info = info;
715 status_t status = sSCSIPeripheral->handle_open(info->scsi_periph_device,
755 if (handle->info->capacity == 0 || handle->info->io_scheduler == NULL) {
760 return handle->info->io_scheduler->ScheduleRequest(request);
768 cd_driver_info *info = handle->info;
775 status_t status = update_capacity(info);
779 size_t size = info->capacity * info->block_size;
820 return get_toc(info, (scsi_toc *)buffer);
824 return load_eject(info, false);
827 return load_eject(info, true);
835 status_t status = get_position(info, &position);
844 return get_set_volume(info, (scsi_volume *)buffer, false);
847 return get_set_volume(info, (scsi_volume *)buffer, true);
855 return play_track_index(info, &track);
864 return play_msf(info, &position);
868 return stop_audio(info);
870 return pause_resume(info, false);
872 return pause_resume(info, true);
880 return scan(info, &scanBuffer);
884 return read_cd(info, (scsi_read_cd *)buffer);
897 cd_set_capacity(cd_driver_info* info, uint64 capacity, uint32 blockSize, uint32 physicalBlockSize)
899 TRACE("cd_set_capacity(info = %p, capacity = %lld, blockSize = %ld)\n",
900 info, capacity, blockSize);
902 if (info->block_size != blockSize) {
909 if (info->block_size != 0) {
910 dprintf("old %" B_PRId32 ", new %" B_PRId32 "\n", info->block_size,
916 status_t status = info->dma_resource->Init(info->node, blockSize, 1024,
929 info->io_scheduler = new(std::nothrow) IOCache(info->dma_resource,
934 info->io_scheduler = new(std::nothrow) IOSchedulerSimple(
935 info->dma_resource);
938 if (info->io_scheduler == NULL)
942 status = info->io_scheduler->Init("scsi");
946 info->io_scheduler->SetCallback(do_io, info);
947 info->block_size = blockSize;
948 info->physical_block_size = physicalBlockSize;
951 if (info->original_capacity != capacity && info->io_scheduler != NULL) {
952 info->original_capacity = capacity;
957 test_capacity(info);
959 info->io_scheduler->SetDeviceCapacity(info->capacity * blockSize);
965 cd_media_changed(cd_driver_info* info, scsi_ccb* request)
969 info->original_capacity = 0;
970 info->capacity = 0;
971 sSCSIPeripheral->check_capacity(info->scsi_periph_device, request);
973 if (info->io_scheduler != NULL)
974 info->io_scheduler->MediaChanged();
1061 cd_driver_info* info = (cd_driver_info*)malloc(sizeof(cd_driver_info));
1062 if (info == NULL)
1065 memset(info, 0, sizeof(cd_driver_info));
1067 info->dma_resource = new(std::nothrow) DMAResource;
1068 if (info->dma_resource == NULL) {
1069 free(info);
1073 info->node = node;
1074 info->removable = removable;
1077 info->original_capacity = 0;
1078 info->capacity = 0;
1079 info->block_size = 0;
1082 &info->device_type, true);
1085 sDeviceManager->get_driver(parent, (driver_module_info**)&info->scsi,
1086 (void**)&info->scsi_device);
1089 status = sSCSIPeripheral->register_device((periph_device_cookie)info,
1090 &callbacks, info->scsi_device, info->scsi, info->node,
1091 info->removable, 10, &info->scsi_periph_device);
1093 free(info);
1097 *_cookie = info;
1105 cd_driver_info* info = (cd_driver_info*)_cookie;
1107 sSCSIPeripheral->unregister_device(info->scsi_periph_device);
1108 free(info);
1115 cd_driver_info* info = (cd_driver_info*)_cookie;
1117 char* name = sSCSIPeripheral->compose_device_name(info->node, "disk/scsi");
1121 status_t status = sDeviceManager->publish_device(info->node, name,