Changeset b7fd2a0 in mainline for uspace/lib/usbhost/src
- Timestamp:
- 2018-01-13T03:10:29Z (8 years ago)
- Branches:
- lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
- Children:
- a53ed3a
- Parents:
- 36f0738
- Location:
- uspace/lib/usbhost/src
- Files:
-
- 4 edited
Legend:
- Unmodified
- Added
- Removed
-
uspace/lib/usbhost/src/ddf_helpers.c
r36f0738 rb7fd2a0 91 91 92 92 93 static int hcd_ddf_new_device(ddf_dev_t *device, usb_dev_t *hub, unsigned port);94 static int hcd_ddf_remove_device(ddf_dev_t *device, usb_dev_t *hub, unsigned port);93 static errno_t hcd_ddf_new_device(ddf_dev_t *device, usb_dev_t *hub, unsigned port); 94 static errno_t hcd_ddf_remove_device(ddf_dev_t *device, usb_dev_t *hub, unsigned port); 95 95 96 96 … … 107 107 * @return Error code. 108 108 */ 109 static int register_endpoint(109 static errno_t register_endpoint( 110 110 ddf_fun_t *fun, usb_endpoint_t endpoint, 111 111 usb_transfer_type_t transfer_type, usb_direction_t direction, … … 136 136 * @return Error code. 137 137 */ 138 static int unregister_endpoint(138 static errno_t unregister_endpoint( 139 139 ddf_fun_t *fun, usb_endpoint_t endpoint, usb_direction_t direction) 140 140 { … … 151 151 } 152 152 153 static int reserve_default_address(ddf_fun_t *fun, usb_speed_t speed)153 static errno_t reserve_default_address(ddf_fun_t *fun, usb_speed_t speed) 154 154 { 155 155 assert(fun); … … 164 164 } 165 165 166 static int release_default_address(ddf_fun_t *fun)166 static errno_t release_default_address(ddf_fun_t *fun) 167 167 { 168 168 assert(fun); … … 176 176 } 177 177 178 static int device_enumerate(ddf_fun_t *fun, unsigned port)178 static errno_t device_enumerate(ddf_fun_t *fun, unsigned port) 179 179 { 180 180 assert(fun); … … 188 188 } 189 189 190 static int device_remove(ddf_fun_t *fun, unsigned port)190 static errno_t device_remove(ddf_fun_t *fun, unsigned port) 191 191 { 192 192 assert(fun); … … 206 206 * @return Error code. 207 207 */ 208 static int get_my_device_handle(ddf_fun_t *fun, devman_handle_t *handle)208 static errno_t get_my_device_handle(ddf_fun_t *fun, devman_handle_t *handle) 209 209 { 210 210 assert(fun); … … 224 224 * @return Error code. 225 225 */ 226 static int dev_read(ddf_fun_t *fun, usb_endpoint_t endpoint,226 static errno_t dev_read(ddf_fun_t *fun, usb_endpoint_t endpoint, 227 227 uint64_t setup_data, uint8_t *data, size_t size, 228 228 usbhc_iface_transfer_in_callback_t callback, void *arg) … … 250 250 * @return Error code. 251 251 */ 252 static int dev_write(ddf_fun_t *fun, usb_endpoint_t endpoint,252 static errno_t dev_write(ddf_fun_t *fun, usb_endpoint_t endpoint, 253 253 uint64_t setup_data, const uint8_t *data, size_t size, 254 254 usbhc_iface_transfer_out_callback_t callback, void *arg) … … 313 313 }; 314 314 315 static int hcd_ddf_add_device(ddf_dev_t *parent, usb_dev_t *hub_dev,315 static errno_t hcd_ddf_add_device(ddf_dev_t *parent, usb_dev_t *hub_dev, 316 316 unsigned port, usb_address_t address, usb_speed_t speed, const char *name, 317 317 const match_id_list_t *mids) … … 351 351 } 352 352 353 int ret = ddf_fun_bind(fun);353 errno_t ret = ddf_fun_bind(fun); 354 354 if (ret != EOK) { 355 355 ddf_fun_destroy(fun); … … 389 389 390 390 /* This is a copy of lib/usbdev/src/recognise.c */ 391 static int create_match_ids(match_id_list_t *l,391 static errno_t create_match_ids(match_id_list_t *l, 392 392 usb_standard_device_descriptor_t *d) 393 393 { … … 418 418 } 419 419 420 static int hcd_ddf_remove_device(ddf_dev_t *device, usb_dev_t *hub,420 static errno_t hcd_ddf_remove_device(ddf_dev_t *device, usb_dev_t *hub, 421 421 unsigned port) 422 422 { … … 443 443 list_remove(&victim->link); 444 444 fibril_mutex_unlock(&hub->guard); 445 const int ret = ddf_fun_unbind(victim->fun);445 const errno_t ret = ddf_fun_unbind(victim->fun); 446 446 if (ret == EOK) { 447 447 usb_address_t address = victim->address; … … 458 458 } 459 459 460 static int hcd_ddf_new_device(ddf_dev_t *device, usb_dev_t *hub, unsigned port)460 static errno_t hcd_ddf_new_device(ddf_dev_t *device, usb_dev_t *hub, unsigned port) 461 461 { 462 462 assert(device); … … 468 468 469 469 /* This checks whether the default address is reserved and gets speed */ 470 int ret = usb_bus_get_speed(&hcd->bus, USB_ADDRESS_DEFAULT, &speed);470 errno_t ret = usb_bus_get_speed(&hcd->bus, USB_ADDRESS_DEFAULT, &speed); 471 471 if (ret != EOK) { 472 472 usb_log_error("Failed to verify speed: %s.", str_error(ret)); … … 621 621 * @return Error code 622 622 */ 623 int hcd_ddf_setup_root_hub(ddf_dev_t *device)623 errno_t hcd_ddf_setup_root_hub(ddf_dev_t *device) 624 624 { 625 625 assert(device); … … 628 628 629 629 hcd_reserve_default_address(hcd, hcd->bus.max_speed); 630 const int ret = hcd_ddf_new_device(device, NULL, 0);630 const errno_t ret = hcd_ddf_new_device(device, NULL, 0); 631 631 hcd_release_default_address(hcd); 632 632 return ret; … … 643 643 * This function does all the ddf work for hc driver. 644 644 */ 645 int hcd_ddf_setup_hc(ddf_dev_t *device, usb_speed_t max_speed,645 errno_t hcd_ddf_setup_hc(ddf_dev_t *device, usb_speed_t max_speed, 646 646 size_t bw, bw_count_func_t bw_count) 647 647 { … … 656 656 hcd_init(&instance->hcd, max_speed, bw, bw_count); 657 657 658 int ret = ENOMEM;658 errno_t ret = ENOMEM; 659 659 instance->ctl_fun = ddf_fun_create(device, fun_exposed, "ctl"); 660 660 if (!instance->ctl_fun) { … … 691 691 hc_dev_t *hc = dev_to_hc_dev(device); 692 692 assert(hc); 693 const int ret = ddf_fun_unbind(hc->ctl_fun);693 const errno_t ret = ddf_fun_unbind(hc->ctl_fun); 694 694 if (ret == EOK) 695 695 ddf_fun_destroy(hc->ctl_fun); … … 703 703 * @return Error code. 704 704 */ 705 int hcd_ddf_enable_interrupt(ddf_dev_t *device, int inum)705 errno_t hcd_ddf_enable_interrupt(ddf_dev_t *device, int inum) 706 706 { 707 707 async_sess_t *parent_sess = ddf_dev_parent_sess_get(device); … … 713 713 714 714 //TODO: Cache parent session in HCD 715 int hcd_ddf_get_registers(ddf_dev_t *device, hw_res_list_parsed_t *hw_res)715 errno_t hcd_ddf_get_registers(ddf_dev_t *device, hw_res_list_parsed_t *hw_res) 716 716 { 717 717 async_sess_t *parent_sess = ddf_dev_parent_sess_get(device); … … 720 720 721 721 hw_res_list_parsed_init(hw_res); 722 const int ret = hw_res_get_list_parsed(parent_sess, hw_res, 0);722 const errno_t ret = hw_res_get_list_parsed(parent_sess, hw_res, 0); 723 723 if (ret != EOK) 724 724 hw_res_list_parsed_clean(hw_res); … … 751 751 * @return Error code. 752 752 */ 753 int hcd_ddf_setup_interrupts(ddf_dev_t *device,753 errno_t hcd_ddf_setup_interrupts(ddf_dev_t *device, 754 754 const hw_res_list_parsed_t *hw_res, 755 755 interrupt_handler_t handler, 756 int (*gen_irq_code)(irq_code_t *, const hw_res_list_parsed_t *, int *),756 errno_t (*gen_irq_code)(irq_code_t *, const hw_res_list_parsed_t *, int *), 757 757 cap_handle_t *handle) 758 758 { … … 765 765 766 766 int irq; 767 int ret = gen_irq_code(&irq_code, hw_res, &irq);767 errno_t ret = gen_irq_code(&irq_code, hw_res, &irq); 768 768 if (ret != EOK) { 769 769 usb_log_error("Failed to generate IRQ code: %s.\n", … … 809 809 } 810 810 811 static int interrupt_polling(void *arg)811 static errno_t interrupt_polling(void *arg) 812 812 { 813 813 hcd_t *hcd = arg; … … 847 847 * - registers root hub 848 848 */ 849 int hcd_ddf_add_hc(ddf_dev_t *device, const ddf_hc_driver_t *driver)849 errno_t hcd_ddf_add_hc(ddf_dev_t *device, const ddf_hc_driver_t *driver) 850 850 { 851 851 assert(driver); … … 857 857 }; 858 858 859 int ret = EOK;859 errno_t ret = EOK; 860 860 const usb_speed_t speed = driver->hc_speed; 861 861 if (speed >= ARRAY_SIZE(bw) || bw[speed].bw == 0) { … … 884 884 driver->irq_handler ? driver->irq_handler : ddf_hcd_gen_irq_handler; 885 885 int irq_cap; 886 int irq_ret = hcd_ddf_setup_interrupts(device, &hw_res,886 errno_t irq_ret = hcd_ddf_setup_interrupts(device, &hw_res, 887 887 irq_handler, driver->irq_code_gen, &irq_cap); 888 888 bool irqs_enabled = (irq_ret == EOK); -
uspace/lib/usbhost/src/hcd.c
r36f0738 rb7fd2a0 49 49 * @return Error code. 50 50 */ 51 static int register_helper(endpoint_t *ep, void *arg)51 static errno_t register_helper(endpoint_t *ep, void *arg) 52 52 { 53 53 hcd_t *hcd = arg; … … 102 102 } 103 103 104 int hcd_request_address(hcd_t *hcd, usb_speed_t speed, usb_address_t *address)104 errno_t hcd_request_address(hcd_t *hcd, usb_speed_t speed, usb_address_t *address) 105 105 { 106 106 assert(hcd); … … 108 108 } 109 109 110 int hcd_release_address(hcd_t *hcd, usb_address_t address)110 errno_t hcd_release_address(hcd_t *hcd, usb_address_t address) 111 111 { 112 112 assert(hcd); … … 115 115 } 116 116 117 int hcd_reserve_default_address(hcd_t *hcd, usb_speed_t speed)117 errno_t hcd_reserve_default_address(hcd_t *hcd, usb_speed_t speed) 118 118 { 119 119 assert(hcd); … … 122 122 } 123 123 124 int hcd_add_ep(hcd_t *hcd, usb_target_t target, usb_direction_t dir,124 errno_t hcd_add_ep(hcd_t *hcd, usb_target_t target, usb_direction_t dir, 125 125 usb_transfer_type_t type, size_t max_packet_size, unsigned packets, 126 126 size_t size, usb_address_t tt_address, unsigned tt_port) … … 132 132 } 133 133 134 int hcd_remove_ep(hcd_t *hcd, usb_target_t target, usb_direction_t dir)134 errno_t hcd_remove_ep(hcd_t *hcd, usb_target_t target, usb_direction_t dir) 135 135 { 136 136 assert(hcd); … … 147 147 } toggle_t; 148 148 149 static void toggle_reset_callback( int retval, void *arg)149 static void toggle_reset_callback(errno_t retval, void *arg) 150 150 { 151 151 assert(arg); … … 172 172 * @return Error code. 173 173 */ 174 int hcd_send_batch(174 errno_t hcd_send_batch( 175 175 hcd_t *hcd, usb_target_t target, usb_direction_t direction, 176 176 void *data, size_t size, uint64_t setup_data, … … 232 232 } 233 233 234 const int ret = hcd->ops.schedule(hcd, batch);234 const errno_t ret = hcd->ops.schedule(hcd, batch); 235 235 if (ret != EOK) 236 236 usb_transfer_batch_destroy(batch); … … 244 244 typedef struct { 245 245 volatile unsigned done; 246 int ret;246 errno_t ret; 247 247 size_t size; 248 248 } sync_data_t; 249 249 250 static void transfer_in_cb( int ret, size_t size, void* data)250 static void transfer_in_cb(errno_t ret, size_t size, void* data) 251 251 { 252 252 sync_data_t *d = data; … … 257 257 } 258 258 259 static void transfer_out_cb( int ret, void* data)259 static void transfer_out_cb(errno_t ret, void* data) 260 260 { 261 261 sync_data_t *d = data; … … 266 266 267 267 /** this is really ugly version of sync usb communication */ 268 int hcd_send_batch_sync(268 errno_t hcd_send_batch_sync( 269 269 hcd_t *hcd, usb_target_t target, usb_direction_t dir, 270 270 void *data, size_t size, uint64_t setup_data, const char* name, size_t *out_size) … … 273 273 sync_data_t sd = { .done = 0, .ret = EBUSY, .size = size }; 274 274 275 const int ret = hcd_send_batch(hcd, target, dir, data, size, setup_data,275 const errno_t ret = hcd_send_batch(hcd, target, dir, data, size, setup_data, 276 276 dir == USB_DIRECTION_IN ? transfer_in_cb : NULL, 277 277 dir == USB_DIRECTION_OUT ? transfer_out_cb : NULL, &sd, name); -
uspace/lib/usbhost/src/usb_bus.c
r36f0738 rb7fd2a0 105 105 * @return Error code. 106 106 */ 107 static int usb_bus_get_free_address(usb_bus_t *instance, usb_address_t *address)107 static errno_t usb_bus_get_free_address(usb_bus_t *instance, usb_address_t *address) 108 108 { 109 109 … … 200 200 * @return Error code. 201 201 */ 202 int usb_bus_init(usb_bus_t *instance,202 errno_t usb_bus_init(usb_bus_t *instance, 203 203 size_t available_bandwidth, bw_count_func_t bw_count, usb_speed_t max_speed) 204 204 { … … 224 224 * @return Error code. 225 225 */ 226 int usb_bus_register_ep(usb_bus_t *instance, endpoint_t *ep, size_t data_size)226 errno_t usb_bus_register_ep(usb_bus_t *instance, endpoint_t *ep, size_t data_size) 227 227 { 228 228 assert(instance); … … 262 262 * @return Error code. 263 263 */ 264 int usb_bus_unregister_ep(usb_bus_t *instance, endpoint_t *ep)264 errno_t usb_bus_unregister_ep(usb_bus_t *instance, endpoint_t *ep) 265 265 { 266 266 assert(instance); … … 316 316 * @return Error code. 317 317 */ 318 int usb_bus_add_ep(usb_bus_t *instance,318 errno_t usb_bus_add_ep(usb_bus_t *instance, 319 319 usb_address_t address, usb_endpoint_t endpoint, usb_direction_t direction, 320 320 usb_transfer_type_t type, size_t max_packet_size, unsigned packets, … … 364 364 365 365 if (callback) { 366 const int ret = callback(ep, arg);366 const errno_t ret = callback(ep, arg); 367 367 if (ret != EOK) { 368 368 fibril_mutex_unlock(&instance->guard); … … 394 394 * @return Error code. 395 395 */ 396 int usb_bus_remove_ep(usb_bus_t *instance,396 errno_t usb_bus_remove_ep(usb_bus_t *instance, 397 397 usb_address_t address, usb_endpoint_t endpoint, usb_direction_t direction, 398 398 ep_remove_callback_t callback, void *arg) … … 417 417 } 418 418 419 int usb_bus_reset_toggle(usb_bus_t *instance, usb_target_t target, bool all)419 errno_t usb_bus_reset_toggle(usb_bus_t *instance, usb_target_t target, bool all) 420 420 { 421 421 assert(instance); … … 423 423 return EINVAL; 424 424 425 int ret = ENOENT;425 errno_t ret = ENOENT; 426 426 427 427 fibril_mutex_lock(&instance->guard); … … 446 446 * @return Error code. 447 447 */ 448 int usb_bus_remove_address(usb_bus_t *instance,448 errno_t usb_bus_remove_address(usb_bus_t *instance, 449 449 usb_address_t address, ep_remove_callback_t callback, void *arg) 450 450 { … … 455 455 fibril_mutex_lock(&instance->guard); 456 456 457 const int ret = instance->devices[address].occupied ? EOK : ENOENT;457 const errno_t ret = instance->devices[address].occupied ? EOK : ENOENT; 458 458 instance->devices[address].occupied = false; 459 459 … … 481 481 * @note Default address is only available in strict mode. 482 482 */ 483 int usb_bus_request_address(usb_bus_t *instance,483 errno_t usb_bus_request_address(usb_bus_t *instance, 484 484 usb_address_t *address, bool strict, usb_speed_t speed) 485 485 { … … 493 493 494 494 usb_address_t addr = *address; 495 int rc;495 errno_t rc; 496 496 497 497 fibril_mutex_lock(&instance->guard); … … 539 539 * @return Error code. 540 540 */ 541 int usb_bus_get_speed(usb_bus_t *instance, usb_address_t address,541 errno_t usb_bus_get_speed(usb_bus_t *instance, usb_address_t address, 542 542 usb_speed_t *speed) 543 543 { … … 549 549 fibril_mutex_lock(&instance->guard); 550 550 551 const int ret = instance->devices[address].occupied ? EOK : ENOENT;551 const errno_t ret = instance->devices[address].occupied ? EOK : ENOENT; 552 552 if (speed && instance->devices[address].occupied) { 553 553 *speed = instance->devices[address].speed; -
uspace/lib/usbhost/src/usb_transfer_batch.c
r36f0738 rb7fd2a0 114 114 */ 115 115 void usb_transfer_batch_finish_error(const usb_transfer_batch_t *instance, 116 const void *data, size_t size, int error)116 const void *data, size_t size, errno_t error) 117 117 { 118 118 assert(instance);
Note:
See TracChangeset
for help on using the changeset viewer.