Changes in uspace/drv/bus/usb/usbmast/main.c [920d0fc:58563585] in mainline
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
uspace/drv/bus/usb/usbmast/main.c
r920d0fc r58563585 35 35 * Main routines of USB mass storage driver. 36 36 */ 37 37 38 #include <as.h> 38 39 #include <async.h> … … 44 45 #include <usb/classes/massstor.h> 45 46 #include <errno.h> 47 #include <io/logctl.h> 46 48 #include <str_error.h> 47 49 #include "cmdw.h" … … 51 53 52 54 #define NAME "usbmast" 53 54 #define GET_BULK_IN(dev) ((dev)->pipes[BULK_IN_EP].pipe)55 #define GET_BULK_OUT(dev) ((dev)->pipes[BULK_OUT_EP].pipe)56 55 57 56 static const usb_endpoint_description_t bulk_in_ep = { … … 85 84 static int usbmast_bd_close(bd_srv_t *); 86 85 static int usbmast_bd_read_blocks(bd_srv_t *, aoff64_t, size_t, void *, size_t); 86 static int usbmast_bd_sync_cache(bd_srv_t *, aoff64_t, size_t); 87 87 static int usbmast_bd_write_blocks(bd_srv_t *, aoff64_t, size_t, const void *, size_t); 88 88 static int usbmast_bd_get_block_size(bd_srv_t *, size_t *); … … 93 93 .close = usbmast_bd_close, 94 94 .read_blocks = usbmast_bd_read_blocks, 95 .sync_cache = usbmast_bd_sync_cache, 95 96 .write_blocks = usbmast_bd_write_blocks, 96 97 .get_block_size = usbmast_bd_get_block_size, … … 110 111 static int usbmast_device_gone(usb_device_t *dev) 111 112 { 112 usbmast_dev_t *mdev = dev->driver_data;113 usbmast_dev_t *mdev = usb_device_data_get(dev); 113 114 assert(mdev); 114 115 … … 150 151 unsigned i; 151 152 153 usb_endpoint_mapping_t *epm_in = 154 usb_device_get_mapped_ep_desc(dev, &bulk_in_ep); 155 usb_endpoint_mapping_t *epm_out = 156 usb_device_get_mapped_ep_desc(dev, &bulk_out_ep); 157 if (!epm_in || !epm_out || !epm_in->present || !epm_out->present) { 158 usb_log_error("Required EPs were not mapped.\n"); 159 return ENOENT; 160 } 161 152 162 /* Allocate softstate */ 153 163 mdev = usb_device_data_alloc(dev, sizeof(usbmast_dev_t)); … … 157 167 } 158 168 159 mdev->ddf_dev = dev->ddf_dev;160 169 mdev->usb_dev = dev; 161 170 162 usb_log_info("Initializing mass storage `%s'.\n", ddf_dev_get_name(dev->ddf_dev)); 171 usb_log_info("Initializing mass storage `%s'.\n", 172 usb_device_get_name(dev)); 163 173 usb_log_debug("Bulk in endpoint: %d [%zuB].\n", 164 dev->pipes[BULK_IN_EP].pipe.endpoint_no, 165 dev->pipes[BULK_IN_EP].pipe.max_packet_size); 174 epm_in->pipe.endpoint_no, epm_in->pipe.max_packet_size); 166 175 usb_log_debug("Bulk out endpoint: %d [%zuB].\n", 167 dev->pipes[BULK_OUT_EP].pipe.endpoint_no, 168 dev->pipes[BULK_OUT_EP].pipe.max_packet_size); 176 epm_out->pipe.endpoint_no, epm_out->pipe.max_packet_size); 169 177 170 178 usb_log_debug("Get LUN count...\n"); … … 177 185 } 178 186 187 mdev->bulk_in_pipe = &epm_in->pipe; 188 mdev->bulk_out_pipe = &epm_out->pipe; 179 189 for (i = 0; i < mdev->lun_count; i++) { 180 190 rc = usbmast_fun_create(mdev, i); … … 221 231 } 222 232 223 fun = ddf_fun_create(mdev->ddf_dev, fun_exposed, fun_name);233 fun = usb_device_ddf_fun_create(mdev->usb_dev, fun_exposed, fun_name); 224 234 if (fun == NULL) { 225 235 usb_log_error("Failed to create DDF function %s.\n", fun_name); … … 252 262 if (rc != EOK) { 253 263 usb_log_warning("Failed to inquire device `%s': %s.\n", 254 ddf_dev_get_name(mdev->ddf_dev), str_error(rc));264 usb_device_get_name(mdev->usb_dev), str_error(rc)); 255 265 rc = EIO; 256 266 goto error; … … 259 269 usb_log_info("Mass storage `%s' LUN %u: " \ 260 270 "%s by %s rev. %s is %s (%s).\n", 261 ddf_dev_get_name(mdev->ddf_dev),271 usb_device_get_name(mdev->usb_dev), 262 272 lun, 263 273 inquiry.product, … … 272 282 if (rc != EOK) { 273 283 usb_log_warning("Failed to read capacity, device `%s': %s.\n", 274 ddf_dev_get_name(mdev->ddf_dev), str_error(rc));284 usb_device_get_name(mdev->usb_dev), str_error(rc)); 275 285 rc = EIO; 276 286 goto error; … … 289 299 goto error; 290 300 } 301 302 ddf_fun_add_to_category(fun, "disk"); 291 303 292 304 free(fun_name); … … 338 350 } 339 351 352 /** Synchronize blocks to nonvolatile storage. */ 353 static int usbmast_bd_sync_cache(bd_srv_t *bd, uint64_t ba, size_t cnt) 354 { 355 usbmast_fun_t *mfun = bd_srv_usbmast(bd); 356 357 return usbmast_sync_cache(mfun, ba, cnt); 358 } 359 340 360 /** Write blocks to the device. */ 341 361 static int usbmast_bd_write_blocks(bd_srv_t *bd, uint64_t ba, size_t cnt, … … 384 404 { 385 405 log_init(NAME); 386 406 logctl_set_log_level(NAME, LVL_NOTE); 387 407 return usb_driver_main(&usbmast_driver); 388 408 }
Note:
See TracChangeset
for help on using the changeset viewer.