Changes in / [eb393ad:c7c0984a] in mainline
- Location:
- uspace
- Files:
-
- 46 edited
Legend:
- Unmodified
- Added
- Removed
-
uspace/app/usbinfo/dev.c
reb393ad rc7c0984a 77 77 } 78 78 79 usb_pipe_start_long_transfer(&dev->ctrl_pipe); 79 rc = usb_pipe_start_long_transfer(&dev->ctrl_pipe); 80 if (rc != EOK) { 81 fprintf(stderr, 82 NAME ": failed to start transfer on control pipe: %s.\n", 83 str_error(rc)); 84 goto leave; 85 } 80 86 transfer_started = true; 81 87 -
uspace/drv/ehci-hcd/main.c
reb393ad rc7c0984a 82 82 pci_get_my_registers(device, &mem_reg_base, &mem_reg_size, &irq); 83 83 CHECK_RET_RETURN(ret, 84 "Failed to get memory addresses for %" PRIun ": %s.\n", 85 device->handle, str_error(ret)); 86 usb_log_info("Memory mapped regs at 0x%" PRIxn " (size %zu), IRQ %d.\n", 84 "Failed(%d) to get memory addresses:.\n", ret, device->handle); 85 usb_log_info("Memory mapped regs at 0x%X (size %zu), IRQ %d.\n", 87 86 mem_reg_base, mem_reg_size, irq); 88 87 … … 103 102 str_error(ret)); 104 103 105 usb_log_info("Controlling new EHCI device `%s' (handle % " PRIun ").\n",104 usb_log_info("Controlling new EHCI device `%s' (handle %llu).\n", 106 105 device->name, device->handle); 107 106 -
uspace/drv/ehci-hcd/pci.c
reb393ad rc7c0984a 117 117 mem_address = res->res.mem_range.address; 118 118 mem_size = res->res.mem_range.size; 119 usb_log_debug2("Found mem: % " PRIxn"%zu.\n",119 usb_log_debug2("Found mem: %llx %zu.\n", 120 120 mem_address, mem_size); 121 121 mem_found = true; … … 186 186 CHECK_RET_HANGUP_RETURN(ret, "Failed(%d) to read PCI config space.\n", 187 187 ret); 188 usb_log_info("Register space BAR at %p:% " PRIxn ".\n", (void *)address, value);188 usb_log_info("Register space BAR at %p:%x.\n", address, value); 189 189 190 190 /* clear lower byte, it's not part of the BASE address */ 191 191 uintptr_t registers = (value & 0xffffff00); 192 usb_log_info("Memory registers BASE address:%p.\n", (void *)registers);192 usb_log_info("Memory registers BASE address:%p.\n", registers); 193 193 194 194 /* if nothing setup the hc, we don't need to turn it off */ … … 201 201 AS_AREA_READ | AS_AREA_WRITE); 202 202 CHECK_RET_HANGUP_RETURN(ret, "Failed(%d) to map registers %p:%p.\n", 203 ret, regs, (void *)registers);203 ret, regs, registers); 204 204 205 205 /* calculate value of BASE */ … … 221 221 IPC_M_CONFIG_SPACE_READ_32, eecp + USBLEGCTLSTS_OFFSET, &value); 222 222 CHECK_RET_HANGUP_RETURN(ret, "Failed(%d) to read USBLEGCTLSTS.\n", ret); 223 usb_log_debug("USBLEGCTLSTS: % " PRIxn ".\n", value);223 usb_log_debug("USBLEGCTLSTS: %x.\n", value); 224 224 225 225 /* Read the first EEC. i.e. Legacy Support register */ … … 228 228 IPC_M_CONFIG_SPACE_READ_32, eecp + USBLEGSUP_OFFSET, &value); 229 229 CHECK_RET_HANGUP_RETURN(ret, "Failed(%d) to read USBLEGSUP.\n", ret); 230 usb_log_debug2("USBLEGSUP: % " PRIxn ".\n", value);230 usb_log_debug2("USBLEGSUP: %x.\n", value); 231 231 232 232 /* Request control from firmware/BIOS, by writing 1 to highest byte. … … 248 248 249 249 if ((value & USBLEGSUP_BIOS_CONTROL) == 0) { 250 usb_log_info("BIOS released control after % zuusec.\n", wait);250 usb_log_info("BIOS released control after %d usec.\n", wait); 251 251 } else { 252 252 /* BIOS failed to hand over control, this should not happen. */ 253 253 usb_log_warning( "BIOS failed to release control after " 254 "% zuusecs, force it.\n", wait);254 "%d usecs, force it.\n", wait); 255 255 ret = async_req_3_0(parent_phone, DEV_IFACE_ID(PCI_DEV_IFACE), 256 256 IPC_M_CONFIG_SPACE_WRITE_32, eecp + USBLEGSUP_OFFSET, … … 271 271 IPC_M_CONFIG_SPACE_READ_32, eecp + USBLEGCTLSTS_OFFSET, &value); 272 272 CHECK_RET_HANGUP_RETURN(ret, "Failed(%d) to read USBLEGCTLSTS.\n", ret); 273 usb_log_debug2("USBLEGCTLSTS: % " PRIxn ".\n", value);273 usb_log_debug2("USBLEGCTLSTS: %x.\n", value); 274 274 275 275 /* Read again Legacy Support register */ … … 277 277 IPC_M_CONFIG_SPACE_READ_32, eecp + USBLEGSUP_OFFSET, &value); 278 278 CHECK_RET_HANGUP_RETURN(ret, "Failed(%d) to read USBLEGSUP.\n", ret); 279 usb_log_debug2("USBLEGSUP: % " PRIxn ".\n", value);279 usb_log_debug2("USBLEGSUP: %x.\n", value); 280 280 281 281 /* -
uspace/drv/ohci/batch.c
reb393ad rc7c0984a 141 141 assert(data); 142 142 size_t tds = data->td_count; 143 usb_log_debug("Batch(%p) checking % zutd(s) for completion.\n",143 usb_log_debug("Batch(%p) checking %d td(s) for completion.\n", 144 144 instance, tds); 145 145 usb_log_debug("ED: %x:%x:%x:%x.\n", … … 150 150 for (; i < tds; ++i) { 151 151 assert(data->tds[i] != NULL); 152 usb_log_debug("TD % zu: %x:%x:%x:%x.\n", i,152 usb_log_debug("TD %d: %x:%x:%x:%x.\n", i, 153 153 data->tds[i]->status, data->tds[i]->cbp, data->tds[i]->next, 154 154 data->tds[i]->be); … … 158 158 instance->error = td_error(data->tds[i]); 159 159 if (instance->error != EOK) { 160 usb_log_debug("Batch(%p) found error TD(% zu):%x.\n",160 usb_log_debug("Batch(%p) found error TD(%d):%x.\n", 161 161 instance, i, data->tds[i]->status); 162 162 /* Make sure TD queue is empty (one TD), -
uspace/drv/ohci/endpoint_list.c
reb393ad rc7c0984a 55 55 } 56 56 instance->list_head_pa = addr_to_phys(instance->list_head); 57 usb_log_debug2("Transfer list %s setup with ED: %p( 0x%0" PRIx32 ")).\n",57 usb_log_debug2("Transfer list %s setup with ED: %p(%p).\n", 58 58 name, instance->list_head, instance->list_head_pa); 59 59 … … 121 121 hcd_ep, instance->name, first, first->ed); 122 122 if (last_ed == instance->list_head) { 123 usb_log_debug2("%s head ED(%p- 0x%0" PRIx32 "): %x:%x:%x:%x.\n",123 usb_log_debug2("%s head ED(%p-%p): %x:%x:%x:%x.\n", 124 124 instance->name, last_ed, instance->list_head_pa, 125 125 last_ed->status, last_ed->td_tail, last_ed->td_head, -
uspace/drv/ohci/hc.c
reb393ad rc7c0984a 113 113 BANDWIDTH_AVAILABLE_USB11); 114 114 CHECK_RET_RETURN(ret, "Failed to initialize endpoint manager: %s.\n", 115 str_error(ret));115 ret, str_error(ret)); 116 116 117 117 hc_gain_control(instance); 118 118 ret = hc_init_memory(instance); 119 CHECK_RET_RETURN(ret, "Failed to create OHCI memory structures: 120 str_error(ret));119 CHECK_RET_RETURN(ret, "Failed to create OHCI memory structures:%s.\n", 120 ret, str_error(ret)); 121 121 hc_init_hw(instance); 122 122 fibril_mutex_initialize(&instance->guard); … … 294 294 if (status & IS_WDH) { 295 295 fibril_mutex_lock(&instance->guard); 296 usb_log_debug2("HCCA: %p-%#" PRIx32 " (%p).\n", instance->hcca, 297 instance->registers->hcca, 298 (void *) addr_to_phys(instance->hcca)); 299 usb_log_debug2("Periodic current: %#" PRIx32 ".\n", 296 usb_log_debug2("HCCA: %p-%p(%p).\n", instance->hcca, 297 instance->registers->hcca, addr_to_phys(instance->hcca)); 298 usb_log_debug2("Periodic current: %p.\n", 300 299 instance->registers->periodic_current); 301 300 … … 406 405 instance->registers->bulk_head = 407 406 instance->lists[USB_TRANSFER_BULK].list_head_pa; 408 usb_log_debug2("Bulk HEAD set to: %p (%#" PRIx32 ").\n",407 usb_log_debug2("Bulk HEAD set to: %p(%p).\n", 409 408 instance->lists[USB_TRANSFER_BULK].list_head, 410 409 instance->lists[USB_TRANSFER_BULK].list_head_pa); … … 412 411 instance->registers->control_head = 413 412 instance->lists[USB_TRANSFER_CONTROL].list_head_pa; 414 usb_log_debug2("Control HEAD set to: %p (%#" PRIx32 ").\n",413 usb_log_debug2("Control HEAD set to: %p(%p).\n", 415 414 instance->lists[USB_TRANSFER_CONTROL].list_head, 416 415 instance->lists[USB_TRANSFER_CONTROL].list_head_pa); … … 488 487 instance->lists[USB_TRANSFER_INTERRUPT].list_head_pa; 489 488 } 490 usb_log_debug2("Interrupt HEADs set to: %p (%#" PRIx32 ").\n",489 usb_log_debug2("Interrupt HEADs set to: %p(%p).\n", 491 490 instance->lists[USB_TRANSFER_INTERRUPT].list_head, 492 491 instance->lists[USB_TRANSFER_INTERRUPT].list_head_pa); -
uspace/drv/ohci/iface.c
reb393ad rc7c0984a 118 118 hc_t *hc = fun_to_hc(fun); 119 119 assert(hc); 120 usb_log_debug("Address bind %d-% " PRIun ".\n", address, handle);120 usb_log_debug("Address bind %d-%d.\n", address, handle); 121 121 usb_device_keeper_bind(&hc->manager, address, handle); 122 122 return EOK; -
uspace/drv/ohci/ohci.c
reb393ad rc7c0984a 148 148 pci_get_my_registers(device, &mem_reg_base, &mem_reg_size, &irq); 149 149 CHECK_RET_DEST_FUN_RETURN(ret, 150 "Failed to get memory addresses for %" PRIun ": %s.\n", 151 device->handle, str_error(ret)); 152 usb_log_debug("Memory mapped regs at %p (size %zu), IRQ %d.\n", 153 (void *) mem_reg_base, mem_reg_size, irq); 150 "Failed(%d) to get memory addresses:.\n", ret, device->handle); 151 usb_log_debug("Memory mapped regs at 0x%X (size %zu), IRQ %d.\n", 152 mem_reg_base, mem_reg_size, irq); 154 153 155 154 ret = pci_disable_legacy(device); -
uspace/drv/ohci/pci.c
reb393ad rc7c0984a 117 117 mem_address = res->res.mem_range.address; 118 118 mem_size = res->res.mem_range.size; 119 usb_log_debug2("Found mem: % p%zu.\n",120 (void *)mem_address, mem_size);119 usb_log_debug2("Found mem: %llx %zu.\n", 120 mem_address, mem_size); 121 121 mem_found = true; 122 122 } -
uspace/drv/uhci-hcd/batch.c
reb393ad rc7c0984a 162 162 assert(data); 163 163 164 usb_log_debug2("Batch(%p) checking % zutransfer(s) for completion.\n",164 usb_log_debug2("Batch(%p) checking %d transfer(s) for completion.\n", 165 165 instance, data->td_count); 166 166 instance->transfered_size = 0; … … 173 173 instance->error = td_status(&data->tds[i]); 174 174 if (instance->error != EOK) { 175 usb_log_debug("Batch(%p) found error TD(% zu):%" PRIx32 ".\n",175 usb_log_debug("Batch(%p) found error TD(%d):%x.\n", 176 176 instance, i, data->tds[i].status); 177 177 td_print_status(&data->tds[i]); -
uspace/drv/uhci-hcd/hc.c
reb393ad rc7c0984a 101 101 ret, io, str_error(ret)); 102 102 instance->registers = io; 103 usb_log_debug("Device registers at %p (%zuB) accessible.\n",103 usb_log_debug("Device registers at %p(%u) accessible.\n", 104 104 io, reg_size); 105 105 … … 423 423 if (frame_list != addr_to_phys(instance->frame_list)) { 424 424 usb_log_debug("Framelist address: %p vs. %p.\n", 425 (void *) frame_list, 426 (void *) addr_to_phys(instance->frame_list)); 425 frame_list, addr_to_phys(instance->frame_list)); 427 426 } 428 427 … … 433 432 uintptr_t real_pa = addr_to_phys(QH(interrupt)); 434 433 if (expected_pa != real_pa) { 435 usb_log_debug("Interrupt QH: %p (frame%d) vs. %p.\n",436 (void *) expected_pa, frnum, (void *)real_pa);434 usb_log_debug("Interrupt QH: %p(frame: %d) vs. %p.\n", 435 expected_pa, frnum, real_pa); 437 436 } 438 437 … … 441 440 if (expected_pa != real_pa) { 442 441 usb_log_debug("Control Slow QH: %p vs. %p.\n", 443 (void *) expected_pa, (void *)real_pa);442 expected_pa, real_pa); 444 443 } 445 444 … … 448 447 if (expected_pa != real_pa) { 449 448 usb_log_debug("Control Full QH: %p vs. %p.\n", 450 (void *) expected_pa, (void *)real_pa);449 expected_pa, real_pa); 451 450 } 452 451 … … 455 454 if (expected_pa != real_pa ) { 456 455 usb_log_debug("Bulk QH: %p vs. %p.\n", 457 (void *) expected_pa, (void *)real_pa);456 expected_pa, real_pa); 458 457 } 459 458 async_usleep(UHCI_DEBUGER_TIMEOUT); -
uspace/drv/uhci-hcd/hw_struct/transfer_descriptor.c
reb393ad rc7c0984a 154 154 assert(instance); 155 155 const uint32_t s = instance->status; 156 usb_log_debug2("TD(%p) status(%# " PRIx32 "):%s %d,%s%s%s%s%s%s%s%s%s%s%s %zu.\n",156 usb_log_debug2("TD(%p) status(%#x):%s %d,%s%s%s%s%s%s%s%s%s%s%s %d.\n", 157 157 instance, instance->status, 158 158 (s & TD_STATUS_SPD_FLAG) ? " SPD," : "", -
uspace/drv/uhci-hcd/iface.c
reb393ad rc7c0984a 118 118 hc_t *hc = fun_to_hc(fun); 119 119 assert(hc); 120 usb_log_debug("Address bind %d-% " PRIun ".\n", address, handle);120 usb_log_debug("Address bind %d-%d.\n", address, handle); 121 121 usb_device_keeper_bind(&hc->manager, address, handle); 122 122 return EOK; -
uspace/drv/uhci-hcd/main.c
reb393ad rc7c0984a 72 72 int ret = uhci_init(uhci, device); 73 73 if (ret != EOK) { 74 usb_log_error("Failed to initialize UHCI driver: %s.\n",75 str_error(ret));74 usb_log_error("Failed(%d) to initialize UHCI driver: %s.\n", 75 ret, str_error(ret)); 76 76 return ret; 77 77 } -
uspace/drv/uhci-hcd/pci.c
reb393ad rc7c0984a 90 90 io_address = res->res.io_range.address; 91 91 io_size = res->res.io_range.size; 92 usb_log_debug2("Found io: % " PRIx64"%zu.\n",92 usb_log_debug2("Found io: %llx %zu.\n", 93 93 res->res.io_range.address, res->res.io_range.size); 94 94 io_found = true; -
uspace/drv/uhci-hcd/transfer_list.c
reb393ad rc7c0984a 58 58 } 59 59 uint32_t queue_head_pa = addr_to_phys(instance->queue_head); 60 usb_log_debug2("Transfer list %s setup with QH: %p (%#" PRIx32").\n",60 usb_log_debug2("Transfer list %s setup with QH: %p(%p).\n", 61 61 name, instance->queue_head, queue_head_pa); 62 62 -
uspace/drv/uhci-hcd/uhci.c
reb393ad rc7c0984a 168 168 pci_get_my_registers(device, &io_reg_base, &io_reg_size, &irq); 169 169 CHECK_RET_DEST_FUN_RETURN(ret, 170 "Failed to get I/O addresses for %" PRIun ": %s.\n", 171 device->handle, str_error(ret)); 172 usb_log_debug("I/O regs at 0x%p (size %zu), IRQ %d.\n", 173 (void *) io_reg_base, io_reg_size, irq); 170 "Failed(%d) to get I/O addresses:.\n", ret, device->handle); 171 usb_log_debug("I/O regs at 0x%X (size %zu), IRQ %d.\n", 172 io_reg_base, io_reg_size, irq); 174 173 175 174 ret = pci_disable_legacy(device); -
uspace/drv/uhci-rhd/main.c
reb393ad rc7c0984a 1 1 /* 2 * Copyright (c) 2011 Jan Vesely2 * Copyright (c) 2011 Vojtech Horky, Jan Vesely 3 3 * All rights reserved. 4 4 * … … 84 84 return EINVAL; 85 85 86 usb_log_debug2("uhci_rh_add_device(handle=%" PRIun ")\n", 87 device->handle); 86 usb_log_debug2("%s called device %d\n", __FUNCTION__, device->handle); 88 87 89 88 uintptr_t io_regs = 0; … … 102 101 ret = hc_get_my_registers(device, &io_regs, &io_size); 103 102 CHECK_RET_FREE_RH_RETURN(ret, 104 "Failed to get registers from HC: %s.\n", str_error(ret)); 105 usb_log_debug("I/O regs at %p (size %zuB).\n", 106 (void *) io_regs, io_size); 103 "Failed(%d) to get registers from HC: %s.\n", ret, str_error(ret)); 104 usb_log_debug("I/O regs at %#x (size %zu).\n", io_regs, io_size); 107 105 108 106 rh = malloc(sizeof(uhci_root_hub_t)); … … 117 115 118 116 device->driver_data = rh; 119 usb_log_info("Controlling root hub '%s' (% " PRIun ").\n",117 usb_log_info("Controlling root hub '%s' (%llu).\n", 120 118 device->name, device->handle); 121 119 return EOK; -
uspace/drv/uhci-rhd/port.c
reb393ad rc7c0984a 89 89 { 90 90 assert(port); 91 asprintf(&port->id_string, "Port (%p - % u)", port, number);91 asprintf(&port->id_string, "Port (%p - %d)", port, number); 92 92 if (port->id_string == NULL) { 93 93 return ENOMEM; … … 115 115 116 116 fibril_add_ready(port->checker); 117 usb_log_debug("%s: Started polling fibril (%" PRIun ").\n",117 usb_log_debug("%s: Started polling fibril(%x).\n", 118 118 port->id_string, port->checker); 119 119 return EOK; … … 267 267 } 268 268 269 usb_log_info("New device at port %u, address %d (handle % " PRIun ").\n",269 usb_log_info("New device at port %u, address %d (handle %llu).\n", 270 270 port->number, dev_addr, port->attached_device); 271 271 return EOK; … … 283 283 int uhci_port_remove_device(uhci_port_t *port) 284 284 { 285 usb_log_error("%s: Don't know how to remove device % " PRIun ".\n",285 usb_log_error("%s: Don't know how to remove device %llu.\n", 286 286 port->id_string, port->attached_device); 287 287 return ENOTSUP; -
uspace/drv/usbflbk/main.c
reb393ad rc7c0984a 65 65 66 66 usb_log_info("Pretending to control %s `%s'" \ 67 " (node `%s', handle % " PRIun ").\n",67 " (node `%s', handle %llu).\n", 68 68 dev->interface_no < 0 ? "device" : "interface", 69 69 dev->ddf_dev->name, fun_name, dev->ddf_dev->handle); -
uspace/drv/usbhid/kbd/conv.c
reb393ad rc7c0984a 99 99 [0x30] = KC_RBRACKET, 100 100 [0x31] = KC_BACKSLASH, 101 //[0x32] = KC_, // TODO: HASH??? maybe same as 0x31 - backslash 102 [0x32] = KC_BACKSLASH, 101 //[0x32] = KC_, // TODO: HASH??? maybe some as 0x31 - backslash 103 102 [0x33] = KC_SEMICOLON, 104 103 [0x34] = KC_QUOTE, // same as APOSTROPHE? (') -
uspace/drv/usbhid/kbd/kbddev.c
reb393ad rc7c0984a 177 177 /*----------------------------------------------------------------------------*/ 178 178 179 //static void usb_kbd_process_keycodes(const uint8_t *key_codes, size_t count,180 //uint8_t report_id, void *arg);181 182 //static const usb_hid_report_in_callbacks_t usb_kbd_parser_callbacks = {183 //.keyboard = usb_kbd_process_keycodes184 //};179 static void usb_kbd_process_keycodes(const uint8_t *key_codes, size_t count, 180 uint8_t report_id, void *arg); 181 182 static const usb_hid_report_in_callbacks_t usb_kbd_parser_callbacks = { 183 .keyboard = usb_kbd_process_keycodes 184 }; 185 185 186 186 /*----------------------------------------------------------------------------*/ … … 336 336 return; 337 337 } 338 339 // TODO: output translating does not work!!340 338 341 339 usb_log_debug("Output report buffer: %s\n", … … 490 488 */ 491 489 static void usb_kbd_check_key_changes(usb_hid_dev_t *hid_dev, 492 usb_kbd_t *kbd_dev /*, const uint8_t *key_codes, size_t count*/)490 usb_kbd_t *kbd_dev, const uint8_t *key_codes, size_t count) 493 491 { 494 492 unsigned int key; … … 504 502 */ 505 503 i = 0; 506 while (i < kbd_dev->key_count && kbd_dev->keys[i] != ERROR_ROLLOVER) {504 while (i < count && key_codes[i] != ERROR_ROLLOVER) { 507 505 ++i; 508 506 } 509 if (i != kbd_dev->key_count) {507 if (i != count) { 510 508 usb_log_debug("Phantom state occured.\n"); 511 509 // phantom state, do nothing 512 510 return; 513 511 } 512 513 /* TODO: quite dummy right now, think of better implementation */ 514 assert(count == kbd_dev->key_count); 514 515 515 516 /* 516 517 * 1) Key releases 517 518 */ 518 for (j = 0; j < kbd_dev->key_count; ++j) {519 for (j = 0; j < count; ++j) { 519 520 // try to find the old key in the new key list 520 521 i = 0; 521 522 while (i < kbd_dev->key_count 522 && k bd_dev->keys[i] != kbd_dev->keys_old[j]) {523 && key_codes[i] != kbd_dev->keys[j]) { 523 524 ++i; 524 525 } 525 526 526 if (i == kbd_dev->key_count) {527 if (i == count) { 527 528 // not found, i.e. the key was released 528 key = usbhid_parse_scancode(kbd_dev->keys _old[j]);529 key = usbhid_parse_scancode(kbd_dev->keys[j]); 529 530 if (!usb_kbd_is_lock(key)) { 530 531 usb_kbd_repeat_stop(kbd_dev, key); … … 543 544 // try to find the new key in the old key list 544 545 j = 0; 545 while (j < kbd_dev->key_count 546 && kbd_dev->keys_old[j] != kbd_dev->keys[i]) { 546 while (j < count && kbd_dev->keys[j] != key_codes[i]) { 547 547 ++j; 548 548 } 549 549 550 if (j == kbd_dev->key_count) {550 if (j == count) { 551 551 // not found, i.e. new key pressed 552 key = usbhid_parse_scancode(k bd_dev->keys[i]);552 key = usbhid_parse_scancode(key_codes[i]); 553 553 usb_log_debug2("Key pressed: %d (keycode: %d)\n", key, 554 kbd_dev->keys[i]); 555 usb_kbd_push_ev(hid_dev, kbd_dev, KEY_PRESS, key); 554 key_codes[i]); 555 usb_kbd_push_ev(hid_dev, kbd_dev, KEY_PRESS, 556 key); 556 557 if (!usb_kbd_is_lock(key)) { 557 558 usb_kbd_repeat_start(kbd_dev, key); … … 562 563 } 563 564 564 // usb_log_debug("Old keys: "); 565 // for (i = 0; i < kbd_dev->key_count; ++i) { 566 // usb_log_debug("%d ", kbd_dev->keys_old[i]); 567 // } 568 // usb_log_debug("\n"); 569 570 571 // usb_log_debug("New keys: "); 572 // for (i = 0; i < kbd_dev->key_count; ++i) { 573 // usb_log_debug("%d ", kbd_dev->keys[i]); 574 // } 575 // usb_log_debug("\n"); 576 577 memcpy(kbd_dev->keys_old, kbd_dev->keys, kbd_dev->key_count * 4); 578 579 usb_log_debug2("New stored keys: "); 580 for (i = 0; i < kbd_dev->key_count; ++i) { 581 usb_log_debug2("%d ", kbd_dev->keys_old[i]); 582 } 583 usb_log_debug2("\n"); 565 memcpy(kbd_dev->keys, key_codes, count); 566 567 usb_log_debug("New stored keycodes: %s\n", 568 usb_debug_str_buffer(kbd_dev->keys, kbd_dev->key_count, 0)); 584 569 } 585 570 … … 603 588 * @sa usb_kbd_check_key_changes(), usb_kbd_check_modifier_changes() 604 589 */ 605 //static void usb_kbd_process_keycodes(const uint8_t *key_codes, size_t count,606 //uint8_t report_id, void *arg)607 //{608 //if (arg == NULL) {609 //usb_log_warning("Missing argument in callback "610 //"usbhid_process_keycodes().\n");611 //return;612 //}613 614 //usb_hid_dev_t *hid_dev = (usb_hid_dev_t *)arg;615 616 //if (hid_dev->data == NULL) {617 //usb_log_warning("Missing KBD device structure in callback.\n");618 //return;619 //}620 621 //usb_kbd_t *kbd_dev = (usb_kbd_t *)hid_dev->data;622 623 //usb_log_debug("Got keys from parser (report id: %u): %s\n",624 //report_id, usb_debug_str_buffer(key_codes, count, 0));625 626 //if (count != kbd_dev->key_count) {627 // usb_log_warning("Number of received keycodes (%zu) differs from"628 // " expected (%zu).\n", count, kbd_dev->key_count);629 //return;630 //}631 632 /////usb_kbd_check_modifier_changes(kbd_dev, key_codes, count);633 //usb_kbd_check_key_changes(hid_dev, kbd_dev, key_codes, count);634 //}590 static void usb_kbd_process_keycodes(const uint8_t *key_codes, size_t count, 591 uint8_t report_id, void *arg) 592 { 593 if (arg == NULL) { 594 usb_log_warning("Missing argument in callback " 595 "usbhid_process_keycodes().\n"); 596 return; 597 } 598 599 usb_hid_dev_t *hid_dev = (usb_hid_dev_t *)arg; 600 601 if (hid_dev->data == NULL) { 602 usb_log_warning("Missing KBD device structure in callback.\n"); 603 return; 604 } 605 606 usb_kbd_t *kbd_dev = (usb_kbd_t *)hid_dev->data; 607 608 usb_log_debug("Got keys from parser (report id: %u): %s\n", 609 report_id, usb_debug_str_buffer(key_codes, count, 0)); 610 611 if (count != kbd_dev->key_count) { 612 usb_log_warning("Number of received keycodes (%d) differs from" 613 " expected number (%d).\n", count, kbd_dev->key_count); 614 return; 615 } 616 617 ///usb_kbd_check_modifier_changes(kbd_dev, key_codes, count); 618 usb_kbd_check_key_changes(hid_dev, kbd_dev, key_codes, count); 619 } 635 620 636 621 /*----------------------------------------------------------------------------*/ … … 656 641 uint8_t *buffer, size_t actual_size) 657 642 { 658 assert(hid_dev->report != NULL); 659 assert(hid_dev != NULL); 660 assert(hid_dev->data != NULL); 661 662 usb_kbd_t *kbd_dev = (usb_kbd_t *)hid_dev->data; 643 assert(hid_dev->parser != NULL); 663 644 664 645 usb_log_debug("Calling usb_hid_parse_report() with " … … 678 659 USB_HID_REPORT_TYPE_INPUT); 679 660 661 unsigned i=0; 662 usb_kbd_t *kbd_dev = (usb_kbd_t *)hid_dev->data; 663 664 memset(kbd_dev->keys, 0, kbd_dev->key_count); 665 while(field != NULL) { 666 if((i < kbd_dev->key_count) && (field->value != 0)){ 667 kbd_dev->keys[i++] = (uint8_t)field->usage; 668 } 669 field = usb_hid_report_get_sibling(hid_dev->parser, field, path, 670 USB_HID_PATH_COMPARE_END | USB_HID_PATH_COMPARE_USAGE_PAGE_ONLY, 671 USB_HID_REPORT_TYPE_INPUT); 672 } 673 usb_kbd_process_keycodes(kbd_dev->keys, kbd_dev->key_count, report_id, hid_dev); 674 680 675 usb_hid_report_path_free(path); 681 676 682 677 if (rc != EOK) { 683 usb_log_warning("Error in usb_hid_ parse_report():"678 usb_log_warning("Error in usb_hid_boot_keyboard_input_report():" 684 679 "%s\n", str_error(rc)); 685 680 } 686 687 // fill in the currently pressed keys688 689 usb_hid_report_field_t *field = usb_hid_report_get_sibling(690 hid_dev->report, NULL, path, USB_HID_PATH_COMPARE_END691 | USB_HID_PATH_COMPARE_USAGE_PAGE_ONLY, USB_HID_REPORT_TYPE_INPUT);692 unsigned i = 0;693 694 // TODO: remove this hack - skipping first field695 field = usb_hid_report_get_sibling(hid_dev->report, field, path,696 USB_HID_PATH_COMPARE_END697 | USB_HID_PATH_COMPARE_USAGE_PAGE_ONLY,698 USB_HID_REPORT_TYPE_INPUT);699 700 while (field != NULL) {701 usb_log_debug2("FIELD (%p) - VALUE(%d) USAGE(%u)\n",702 field, field->value, field->usage);703 704 assert(i < kbd_dev->key_count);705 // if (i == kbd_dev->key_count) {706 // break;707 // }708 709 // save the key usage710 kbd_dev->keys[i] = field->usage;711 usb_log_debug2("Saved %u. key usage %d\n", i, kbd_dev->keys[i]);712 713 ++i;714 field = usb_hid_report_get_sibling(hid_dev->report, field, path,715 USB_HID_PATH_COMPARE_END716 | USB_HID_PATH_COMPARE_USAGE_PAGE_ONLY,717 USB_HID_REPORT_TYPE_INPUT);718 }719 720 usb_hid_report_path_free(path);721 722 usb_kbd_check_key_changes(hid_dev, kbd_dev);723 681 } 724 682 … … 808 766 809 767 kbd_dev->key_count = usb_hid_report_input_length( 810 hid_dev-> report, path,768 hid_dev->parser, path, 811 769 USB_HID_PATH_COMPARE_END | USB_HID_PATH_COMPARE_USAGE_PAGE_ONLY); 812 770 usb_hid_report_path_free(path); … … 814 772 usb_log_debug("Size of the input report: %zu\n", kbd_dev->key_count); 815 773 816 kbd_dev->keys = ( int32_t *)calloc(kbd_dev->key_count, sizeof(int32_t));774 kbd_dev->keys = (uint8_t *)calloc(kbd_dev->key_count, sizeof(uint8_t)); 817 775 818 776 if (kbd_dev->keys == NULL) { … … 822 780 } 823 781 824 kbd_dev->keys_old =825 (int32_t *)calloc(kbd_dev->key_count, sizeof(int32_t));826 827 if (kbd_dev->keys_old == NULL) {828 usb_log_fatal("No memory!\n");829 free(kbd_dev->keys);830 free(kbd_dev);831 return ENOMEM;832 }833 834 782 /* 835 783 * Output report 836 784 */ 837 785 kbd_dev->output_size = 0; 838 kbd_dev->output_buffer = usb_hid_report_output(hid_dev-> report,839 &kbd_dev->output_size, 0 );786 kbd_dev->output_buffer = usb_hid_report_output(hid_dev->parser, 787 &kbd_dev->output_size, 0x00); 840 788 if (kbd_dev->output_buffer == NULL) { 841 789 usb_log_warning("Error creating output report buffer.\n"); … … 850 798 kbd_dev->led_path, USB_HIDUT_PAGE_LED, 0); 851 799 852 kbd_dev->led_output_size = usb_hid_report_output_size(hid_dev-> report,800 kbd_dev->led_output_size = usb_hid_report_output_size(hid_dev->parser, 853 801 kbd_dev->led_path, 854 802 USB_HID_PATH_COMPARE_END | USB_HID_PATH_COMPARE_USAGE_PAGE_ONLY); … … 1007 955 int usb_kbd_set_boot_protocol(usb_hid_dev_t *hid_dev) 1008 956 { 1009 int rc = usb_hid_parse_report_descriptor(hid_dev-> report,957 int rc = usb_hid_parse_report_descriptor(hid_dev->parser, 1010 958 USB_KBD_BOOT_REPORT_DESCRIPTOR, 1011 959 USB_KBD_BOOT_REPORT_DESCRIPTOR_SIZE); -
uspace/drv/usbhid/kbd/kbddev.h
reb393ad rc7c0984a 65 65 */ 66 66 typedef struct usb_kbd_t { 67 /** Previously pressed keys (not translated to key codes). */68 int32_t *keys_old;69 67 /** Currently pressed keys (not translated to key codes). */ 70 int32_t *keys;68 uint8_t *keys; 71 69 /** Count of stored keys (i.e. number of keys in the report). */ 72 70 size_t key_count; -
uspace/drv/usbhid/lgtch-ultrax/lgtch-ultrax.c
reb393ad rc7c0984a 86 86 usb_hid_report_path_set_report_id(path, report_id); 87 87 88 usb_hid_report_field_t *field = usb_hid_report_get_sibling(hid_dev-> report, NULL, path, USB_HID_PATH_COMPARE_END , USB_HID_REPORT_TYPE_INPUT);88 usb_hid_report_field_t *field = usb_hid_report_get_sibling(hid_dev->parser, NULL, path, USB_HID_PATH_COMPARE_END , USB_HID_REPORT_TYPE_INPUT); 89 89 while(field != NULL) { 90 90 usb_log_debug("KEY VALUE(%X) USAGE(%X)\n", field->value, field->usage); -
uspace/drv/usbhid/mouse/mousedev.c
reb393ad rc7c0984a 296 296 int usb_mouse_set_boot_protocol(usb_hid_dev_t *hid_dev) 297 297 { 298 int rc = usb_hid_parse_report_descriptor(hid_dev-> report,298 int rc = usb_hid_parse_report_descriptor(hid_dev->parser, 299 299 USB_MOUSE_BOOT_REPORT_DESCRIPTOR, 300 300 USB_MOUSE_BOOT_REPORT_DESCRIPTOR_SIZE); -
uspace/drv/usbhid/subdrivers.c
reb393ad rc7c0984a 55 55 USB_HID_PATH_COMPARE_END 56 56 | USB_HID_PATH_COMPARE_USAGE_PAGE_ONLY, 57 -1,58 -1,57 0, 58 0, 59 59 { 60 60 .init = usb_kbd_init, … … 79 79 } 80 80 }, 81 {NULL, -1, 0, -1, -1, {NULL, NULL, NULL, NULL}}81 {NULL, -1, 0, 0, 0, {NULL, NULL, NULL, NULL}} 82 82 }; 83 83 -
uspace/drv/usbhid/subdrivers.h
reb393ad rc7c0984a 56 56 int report_id; 57 57 int compare; 58 int vendor_id;59 int product_id;58 uint16_t vendor_id; 59 uint16_t product_id; 60 60 usb_hid_subdriver_t subdriver; 61 61 } usb_hid_subdriver_mapping_t; -
uspace/drv/usbhid/usbhid.c
reb393ad rc7c0984a 158 158 const usb_hid_subdriver_mapping_t *mapping) 159 159 { 160 assert(hid_dev != NULL); 161 assert(hid_dev->usb_dev != NULL); 162 163 return (hid_dev->usb_dev->descriptors.device.vendor_id 164 == mapping->vendor_id 165 && hid_dev->usb_dev->descriptors.device.product_id 166 == mapping->product_id); 160 return false; 167 161 } 168 162 … … 198 192 } 199 193 200 assert(hid_dev-> report!= NULL);194 assert(hid_dev->parser != NULL); 201 195 202 196 usb_log_debug("Compare flags: %d\n", mapping->compare); 203 size_t size = usb_hid_report_input_length(hid_dev-> report, usage_path,197 size_t size = usb_hid_report_input_length(hid_dev->parser, usage_path, 204 198 mapping->compare); 205 usb_log_debug("Size of the input report: % zuB\n", size);199 usb_log_debug("Size of the input report: %d\n", size); 206 200 207 201 usb_hid_report_path_free(usage_path); … … 257 251 while (count < USB_HID_MAX_SUBDRIVERS && 258 252 (mapping->usage_path != NULL 259 || mapping->vendor_id >= 0 || mapping->product_id >= 0)) {253 || mapping->vendor_id != 0 || mapping->product_id != 0)) { 260 254 // check the vendor & product ID 261 if (mapping->vendor_id >= 0 && mapping->product_id <0) {262 usb_log_warning("Missing Product ID for Vendor ID % d\n",255 if (mapping->vendor_id != 0 && mapping->product_id == 0) { 256 usb_log_warning("Missing Product ID for Vendor ID %u\n", 263 257 mapping->vendor_id); 264 258 return EINVAL; 265 259 } 266 if (mapping->product_id >= 0 && mapping->vendor_id <0) {267 usb_log_warning("Missing Vendor ID for Product ID % d\n",260 if (mapping->product_id != 0 && mapping->vendor_id == 0) { 261 usb_log_warning("Missing Vendor ID for Product ID %u\n", 268 262 mapping->product_id); 269 263 return EINVAL; … … 273 267 matched = false; 274 268 275 if (mapping->vendor_id >= 0) {276 assert(mapping->product_id >= 0);269 if (mapping->vendor_id != 0) { 270 assert(mapping->product_id != 0); 277 271 usb_log_debug("Comparing device against vendor ID %u" 278 272 " and product ID %u.\n", mapping->vendor_id, … … 347 341 } 348 342 349 hid_dev-> report= (usb_hid_report_t *)(malloc(sizeof(343 hid_dev->parser = (usb_hid_report_t *)(malloc(sizeof( 350 344 usb_hid_report_t))); 351 if (hid_dev-> report== NULL) {345 if (hid_dev->parser == NULL) { 352 346 usb_log_fatal("No memory!\n"); 353 347 free(hid_dev); … … 391 385 /* Get the report descriptor and parse it. */ 392 386 rc = usb_hid_process_report_descriptor(hid_dev->usb_dev, 393 hid_dev-> report);387 hid_dev->parser); 394 388 395 389 bool fallback = false; … … 589 583 590 584 // destroy the parser 591 if ((*hid_dev)-> report!= NULL) {592 usb_hid_free_report((*hid_dev)-> report);585 if ((*hid_dev)->parser != NULL) { 586 usb_hid_free_report((*hid_dev)->parser); 593 587 } 594 588 -
uspace/drv/usbhid/usbhid.h
reb393ad rc7c0984a 91 91 92 92 /** HID Report parser. */ 93 usb_hid_report_t * report;93 usb_hid_report_t *parser; 94 94 95 95 /** Arbitrary data (e.g. a special structure for handling keyboard). */ -
uspace/drv/usbhub/ports.c
reb393ad rc7c0984a 83 83 void usb_hub_process_interrupt(usb_hub_info_t * hub, 84 84 uint16_t port) { 85 usb_log_debug("interrupt at port % zu\n", (size_t)port);85 usb_log_debug("interrupt at port %d\n", port); 86 86 //determine type of change 87 87 //usb_pipe_t *pipe = hub->control_pipe; … … 93 93 if (opResult != EOK) { 94 94 usb_log_error("Failed to get port %zu status: %s.\n", 95 (size_t)port, str_error(opResult));95 port, str_error(opResult)); 96 96 return; 97 97 } … … 100 100 bool device_connected = usb_port_is_status(status, 101 101 USB_HUB_FEATURE_PORT_CONNECTION); 102 usb_log_debug("Connection change on port %zu: %s.\n", 103 (size_t) port, 102 usb_log_debug("Connection change on port %zu: %s.\n", port, 104 103 device_connected ? "device attached" : "device removed"); 105 104 … … 110 109 usb_log_error( 111 110 "Cannot handle change on port %zu: %s.\n", 112 (size_t) port,str_error(opResult));111 str_error(opResult)); 113 112 } 114 113 } else { … … 211 210 static void usb_hub_port_reset_completed(usb_hub_info_t * hub, 212 211 uint16_t port, uint32_t status){ 213 usb_log_debug("Port %zu reset complete.\n", (size_t)port);212 usb_log_debug("Port %zu reset complete.\n", port); 214 213 if (usb_port_is_status(status, USB_HUB_FEATURE_PORT_ENABLE)) { 215 214 /* Finalize device adding. */ … … 223 222 usb_log_warning( 224 223 "Port %zu reset complete but port not enabled.\n", 225 (size_t)port);224 port); 226 225 } 227 226 } -
uspace/drv/usbhub/usbhub.c
reb393ad rc7c0984a 264 264 port+1, USB_HUB_FEATURE_PORT_POWER); 265 265 if (opResult != EOK) { 266 usb_log_error("cannot power on port % zu: %s.\n",267 port+1, str_error(opResult));266 usb_log_error("cannot power on port %d; %d\n", 267 port+1, opResult); 268 268 } 269 269 } … … 273 273 USB_HUB_FEATURE_C_HUB_LOCAL_POWER); 274 274 if (opResult != EOK) { 275 usb_log_error("cannot power hub : %s\n",276 str_error(opResult));275 usb_log_error("cannot power hub; %d\n", 276 opResult); 277 277 } 278 278 } … … 362 362 } 363 363 364 usb_log_info("Controlling hub `%s' (% zuports).\n",364 usb_log_info("Controlling hub `%s' (%d ports).\n", 365 365 hub_info->usb_device->ddf_dev->name, hub_info->port_count); 366 366 return EOK; … … 430 430 port, USB_HUB_FEATURE_PORT_POWER); 431 431 if (opResult != EOK) { 432 usb_log_error(" Cannot power on port %zu: %s.\n",433 port, str_error(opResult));432 usb_log_error("cannot power on port %d; %d\n", 433 port, opResult); 434 434 } 435 435 } -
uspace/drv/usbkbd/kbddev.c
reb393ad rc7c0984a 570 570 571 571 if (count != kbd_dev->key_count) { 572 usb_log_warning("Number of received keycodes (% zu) differs from"573 " expected (%zu).\n", count, kbd_dev->key_count);572 usb_log_warning("Number of received keycodes (%d) differs from" 573 " expected number (%d).\n", count, kbd_dev->key_count); 574 574 return; 575 575 } -
uspace/drv/usbmid/main.c
reb393ad rc7c0984a 53 53 usb_log_info("Taking care of new MID `%s'.\n", dev->ddf_dev->name); 54 54 55 usb_pipe_start_long_transfer(&dev->ctrl_pipe); 55 int rc; 56 57 rc = usb_pipe_start_long_transfer(&dev->ctrl_pipe); 58 if (rc != EOK) { 59 usb_log_error("Failed to start transfer on control pipe: %s.\n", 60 str_error(rc)); 61 return rc; 62 } 56 63 57 64 bool accept = usbmid_explore_device(dev); -
uspace/drv/usbmouse/init.c
reb393ad rc7c0984a 125 125 } 126 126 127 /* Open the control pipe. */ 128 rc = usb_pipe_start_session(&dev->ctrl_pipe); 129 if (rc != EOK) { 130 goto leave; 131 } 132 127 133 /* Set the boot protocol. */ 128 134 rc = usb_control_request_set(&dev->ctrl_pipe, … … 134 140 } 135 141 136 /* Everything all right. */ 142 /* Close the control pipe (ignore errors). */ 143 usb_pipe_end_session(&dev->ctrl_pipe); 144 145 146 /* Everything allright. */ 137 147 dev->driver_data = mouse; 138 148 mouse->mouse_fun->driver_data = mouse; -
uspace/drv/usbmouse/main.c
reb393ad rc7c0984a 54 54 } 55 55 56 usb_log_debug("Polling pipe at endpoint %d.\n", 57 dev->pipes[0].pipe->endpoint_no); 56 usb_log_debug("Polling pipe at endpoint %d.\n", dev->pipes[0].pipe->endpoint_no); 58 57 59 58 rc = usb_device_auto_poll(dev, 0, … … 67 66 } 68 67 69 usb_log_info("controlling new mouse (handle % " PRIun ").\n",68 usb_log_info("controlling new mouse (handle %llu).\n", 70 69 dev->ddf_dev->handle); 71 70 -
uspace/drv/vhc/conndev.c
reb393ad rc7c0984a 99 99 int rc = get_device_name(callback, devname, DEVICE_NAME_MAXLENGTH); 100 100 101 usb_log_info("New virtual device `%s' (id = % " PRIxn ").\n",101 usb_log_info("New virtual device `%s' (id = %x).\n", 102 102 rc == EOK ? devname : "<unknown>", dev->id); 103 103 … … 122 122 } 123 123 124 usb_log_info("Virtual device disconnected (id = %" PRIxn ").\n", 125 dev->id); 124 usb_log_info("Virtual device disconnected (id = %x).\n", dev->id); 126 125 virtdev_destroy_device(dev); 127 126 } -
uspace/lib/usb/include/usb/debug.h
reb393ad rc7c0984a 36 36 #define LIBUSB_DEBUG_H_ 37 37 #include <stdio.h> 38 #include <inttypes.h>39 38 #include <usb/usb.h> 40 39 #include <assert.h> … … 86 85 void usb_log_enable(usb_log_level_t, const char *); 87 86 88 void usb_log_printf(usb_log_level_t, const char *, ...) 89 PRINTF_ATTRIBUTE(2, 3); 87 void usb_log_printf(usb_log_level_t, const char *, ...); 90 88 91 89 /** Log fatal error. */ -
uspace/lib/usb/include/usb/pipes.h
reb393ad rc7c0984a 99 99 /** Number of active transfers over the pipe. */ 100 100 int refcount; 101 /** Number of failed attempts to open the HC phone.102 * When user requests usb_pipe_start_long_transfer() and the operation103 * fails, there is no way to report this to the user.104 * That the soft reference counter is increased to record the attempt.105 * When the user then request e.g. usb_pipe_read(), it will try to106 * add reference as well.107 * If that fails, it is reported to the user. If it is okay, the108 * real reference counter is incremented.109 * The problem might arise when ending the long transfer (since110 * the number of references would be only 1, but logically it shall be111 * two).112 * Decrementing the soft counter first shall solve this.113 */114 int refcount_soft;115 101 116 102 /** Whether to automatically reset halt on the endpoint. … … 177 163 int usb_pipe_unregister(usb_pipe_t *, usb_hc_connection_t *); 178 164 179 void usb_pipe_start_long_transfer(usb_pipe_t *); 165 int usb_pipe_start_session(usb_pipe_t *); 166 int usb_pipe_end_session(usb_pipe_t *); 167 bool usb_pipe_is_session_started(usb_pipe_t *); 168 169 int usb_pipe_start_long_transfer(usb_pipe_t *); 180 170 void usb_pipe_end_long_transfer(usb_pipe_t *); 181 171 -
uspace/lib/usb/src/devdrv.c
reb393ad rc7c0984a 236 236 237 237 /* It is worth to start a long transfer. */ 238 usb_pipe_start_long_transfer(ctrl_pipe); 238 rc = usb_pipe_start_long_transfer(ctrl_pipe); 239 if (rc != EOK) { 240 return rc; 241 } 239 242 240 243 /* Get the device descriptor. */ -
uspace/lib/usb/src/devpoll.c
reb393ad rc7c0984a 78 78 usb_endpoint_mapping_t *mapping 79 79 = &polling_data->dev->pipes[polling_data->pipe_index]; 80 usb_log_debug("Poll %p: started polling of `%s' - " \80 usb_log_debug("Poll0x%x: started polling of `%s' - " \ 81 81 "interface %d (%s,%d,%d), %zuB/%zu.\n", 82 82 polling_data, … … 100 100 if (rc == EOK) { 101 101 usb_log_debug( 102 "Poll %p: received: '%s' (%zuB).\n",102 "Poll0x%x: received: '%s' (%zuB).\n", 103 103 polling_data, 104 104 usb_debug_str_buffer(polling_data->buffer, … … 107 107 } else { 108 108 usb_log_debug( 109 "Poll %p: polling failed: %s.\n",109 "Poll0x%x: polling failed: %s.\n", 110 110 polling_data, str_error(rc)); 111 111 } -
uspace/lib/usb/src/hidreport.c
reb393ad rc7c0984a 109 109 110 110 if (*d != sizeof(usb_standard_hid_descriptor_t)) { 111 usb_log_error("HID descriptor has wrong size (%u, expected %zu"111 usb_log_error("HID descriptor hass wrong size (%u, expected %u" 112 112 ")\n", *d, sizeof(usb_standard_hid_descriptor_t)); 113 113 return EINVAL; … … 149 149 free(*report_desc); 150 150 *report_desc = NULL; 151 usb_log_error("Report descriptor has wrong size (% zu, expected "151 usb_log_error("Report descriptor has wrong size (%u, expected " 152 152 "%u)\n", actual_size, length); 153 153 return EINVAL; -
uspace/lib/usb/src/pipepriv.c
reb393ad rc7c0984a 77 77 * 78 78 * @param pipe The USB pipe. 79 * @param hide_failure Whether to hide failure when adding reference80 * (use soft refcount).81 79 * @return Error code. 82 80 * @retval EOK Currently always. 83 81 */ 84 int pipe_add_ref(usb_pipe_t *pipe , bool hide_failure)82 int pipe_add_ref(usb_pipe_t *pipe) 85 83 { 84 another_try: 86 85 pipe_acquire(pipe); 87 86 … … 90 89 int phone = devman_device_connect(pipe->wire->hc_handle, 0); 91 90 if (phone < 0) { 92 if (hide_failure) { 93 pipe->refcount_soft++; 94 phone = EOK; 95 } 91 // TODO: treat some error as non-recoverable 92 // and return error from here 96 93 pipe_release(pipe); 97 return phone;94 goto another_try; 98 95 } 99 96 /* … … 117 114 { 118 115 pipe_acquire(pipe); 119 if (pipe->refcount_soft > 0) {120 pipe->refcount_soft--;121 pipe_release(pipe);122 return;123 }124 116 assert(pipe->refcount > 0); 125 117 pipe->refcount--; -
uspace/lib/usb/src/pipepriv.h
reb393ad rc7c0984a 37 37 38 38 #include <usb/pipes.h> 39 #include <bool.h>40 39 41 40 void pipe_acquire(usb_pipe_t *); … … 45 44 void pipe_end_transaction(usb_pipe_t *); 46 45 47 int pipe_add_ref(usb_pipe_t * , bool);46 int pipe_add_ref(usb_pipe_t *); 48 47 void pipe_drop_ref(usb_pipe_t *); 49 48 -
uspace/lib/usb/src/pipes.c
reb393ad rc7c0984a 229 229 } 230 230 231 232 /** Start a session on the endpoint pipe. 233 * 234 * A session is something inside what any communication occurs. 235 * It is expected that sessions would be started right before the transfer 236 * and ended - see usb_pipe_end_session() - after the last 237 * transfer. 238 * The reason for this is that session actually opens some communication 239 * channel to the host controller (or to the physical hardware if you 240 * wish) and thus it involves acquiring kernel resources. 241 * Since they are limited, sessions shall not be longer than strictly 242 * necessary. 243 * 244 * @deprecated 245 * Obsoleted with introduction of usb_pipe_start_long_transfer 246 * 247 * @param pipe Endpoint pipe to start the session on. 248 * @return Error code. 249 */ 250 int usb_pipe_start_session(usb_pipe_t *pipe) 251 { 252 usb_log_warning("usb_pipe_start_session() was deprecated.\n"); 253 return EOK; 254 } 255 256 257 /** Ends a session on the endpoint pipe. 258 * 259 * @deprecated 260 * Obsoleted with introduction of usb_pipe_end_long_transfer 261 * 262 * @see usb_pipe_start_session 263 * 264 * @param pipe Endpoint pipe to end the session on. 265 * @return Error code. 266 */ 267 int usb_pipe_end_session(usb_pipe_t *pipe) 268 { 269 usb_log_warning("usb_pipe_end_session() was deprecated.\n"); 270 return EOK; 271 } 272 273 /** Tell whether a session is started (open) on the endpoint pipe. 274 * 275 * The expected usage of this function is in assertions for some 276 * nested functions. 277 * 278 * @param pipe Endpoint pipe in question. 279 * @return Whether @p pipe has opened a session. 280 */ 281 bool usb_pipe_is_session_started(usb_pipe_t *pipe) 282 { 283 pipe_acquire(pipe); 284 bool started = pipe->refcount > 0; 285 pipe_release(pipe); 286 return started; 287 } 288 231 289 /** Prepare pipe for a long transfer. 232 290 * … … 239 297 * @return Error code. 240 298 */ 241 voidusb_pipe_start_long_transfer(usb_pipe_t *pipe)242 { 243 (void) pipe_add_ref(pipe, true);299 int usb_pipe_start_long_transfer(usb_pipe_t *pipe) 300 { 301 return pipe_add_ref(pipe); 244 302 } 245 303 -
uspace/lib/usb/src/pipesinit.c
reb393ad rc7c0984a 365 365 pipe->direction = direction; 366 366 pipe->refcount = 0; 367 pipe->refcount_soft = 0;368 367 pipe->auto_reset_halt = false; 369 368 … … 420 419 int rc; 421 420 422 usb_pipe_start_long_transfer(pipe); 421 rc = usb_pipe_start_long_transfer(pipe); 422 if (rc != EOK) { 423 return rc; 424 } 425 423 426 424 427 uint8_t dev_descr_start[CTRL_PIPE_MIN_PACKET_SIZE]; -
uspace/lib/usb/src/pipesio.c
reb393ad rc7c0984a 173 173 174 174 int rc; 175 rc = pipe_add_ref(pipe , false);175 rc = pipe_add_ref(pipe); 176 176 if (rc != EOK) { 177 177 return rc; … … 296 296 int rc; 297 297 298 rc = pipe_add_ref(pipe , false);298 rc = pipe_add_ref(pipe); 299 299 if (rc != EOK) { 300 300 return rc; … … 447 447 int rc; 448 448 449 rc = pipe_add_ref(pipe , false);449 rc = pipe_add_ref(pipe); 450 450 if (rc != EOK) { 451 451 return rc; … … 579 579 int rc; 580 580 581 rc = pipe_add_ref(pipe , false);581 rc = pipe_add_ref(pipe); 582 582 if (rc != EOK) { 583 583 return rc;
Note:
See TracChangeset
for help on using the changeset viewer.