Changes in / [81db65b:a29529b] in mainline
- Location:
- uspace
- Files:
-
- 55 added
- 51 deleted
- 39 edited
Legend:
- Unmodified
- Added
- Removed
-
uspace/Makefile
r81db65b ra29529b 179 179 ifeq ($(UARCH),amd64) 180 180 LIBS += lib/usb 181 LIBS += lib/usbhost 182 LIBS += lib/usbdev 183 LIBS += lib/usbhid 181 184 LIBS += lib/usbvirt 182 185 endif … … 184 187 ifeq ($(UARCH),ia32) 185 188 LIBS += lib/usb 189 LIBS += lib/usbhost 190 LIBS += lib/usbdev 191 LIBS += lib/usbhid 186 192 LIBS += lib/usbvirt 187 193 endif -
uspace/Makefile.common
r81db65b ra29529b 88 88 89 89 LIBUSB_PREFIX = $(LIB_PREFIX)/usb 90 LIBUSBHOST_PREFIX = $(LIB_PREFIX)/usbhost 91 LIBUSBDEV_PREFIX = $(LIB_PREFIX)/usbdev 92 LIBUSBHID_PREFIX = $(LIB_PREFIX)/usbhid 90 93 LIBUSBVIRT_PREFIX = $(LIB_PREFIX)/usbvirt 91 94 LIBDRV_PREFIX = $(LIB_PREFIX)/drv -
uspace/app/lsusb/Makefile
r81db65b ra29529b 30 30 BINARY = lsusb 31 31 32 LIBS = $(LIBUSB_PREFIX)/libusb.a $(LIBDRV_PREFIX)/libdrv.a 33 EXTRA_CFLAGS = -I$(LIBUSB_PREFIX)/include -I$(LIBDRV_PREFIX)/include 32 LIBS = \ 33 $(LIBUSBDEV_PREFIX)/libusbdev.a \ 34 $(LIBUSB_PREFIX)/libusb.a \ 35 $(LIBDRV_PREFIX)/libdrv.a 36 EXTRA_CFLAGS = \ 37 -I$(LIBUSB_PREFIX)/include \ 38 -I$(LIBUSBDEV_PREFIX)/include \ 39 -I$(LIBDRV_PREFIX)/include 34 40 35 41 SOURCES = \ -
uspace/app/tester/Makefile
r81db65b ra29529b 31 31 BINARY = tester 32 32 33 LIBS += $(LIBUSB_PREFIX)/libusb.a34 EXTRA_CFLAGS += -I$(LIBUSB_PREFIX)/include35 36 33 SOURCES = \ 37 34 tester.c \ 38 adt/usbaddrkeep.c \39 35 thread/thread1.c \ 40 36 print/print1.c \ -
uspace/app/tester/tester.c
r81db65b ra29529b 64 64 #include "mm/mapping1.def" 65 65 #include "hw/serial/serial1.def" 66 #include "adt/usbaddrkeep.def"67 66 #include "hw/misc/virtchar1.def" 68 67 #include "devs/devman1.def" -
uspace/app/tester/tester.h
r81db65b ra29529b 80 80 extern const char *test_mapping1(void); 81 81 extern const char *test_serial1(void); 82 extern const char *test_usbaddrkeep(void);83 82 extern const char *test_virtchar1(void); 84 83 extern const char *test_devman1(void); -
uspace/app/usbinfo/Makefile
r81db65b ra29529b 30 30 BINARY = usbinfo 31 31 32 LIBS = $(LIBUSB_PREFIX)/libusb.a $(LIBDRV_PREFIX)/libdrv.a 33 EXTRA_CFLAGS = -I$(LIBUSB_PREFIX)/include -I$(LIBDRV_PREFIX)/include 32 LIBS = \ 33 $(LIBUSBDEV_PREFIX)/libusbdev.a \ 34 $(LIBUSB_PREFIX)/libusb.a \ 35 $(LIBDRV_PREFIX)/libdrv.a 36 EXTRA_CFLAGS = \ 37 -I$(LIBUSB_PREFIX)/include \ 38 -I$(LIBUSBDEV_PREFIX)/include \ 39 -I$(LIBDRV_PREFIX)/include 34 40 35 41 SOURCES = \ -
uspace/app/usbinfo/info.c
r81db65b ra29529b 41 41 #include <usb/request.h> 42 42 #include <usb/classes/classes.h> 43 #include <usb/classes/hid.h>44 43 #include <usb/classes/hub.h> 45 44 #include "usbinfo.h" -
uspace/app/usbinfo/main.c
r81db65b ra29529b 46 46 #include <usb/pipes.h> 47 47 #include <usb/host.h> 48 #include <usb/driver.h> 48 49 #include "usbinfo.h" 49 50 -
uspace/app/vuhid/Makefile
r81db65b ra29529b 34 34 LIBS = \ 35 35 $(LIBUSBVIRT_PREFIX)/libusbvirt.a \ 36 $(LIBUSBHID_PREFIX)/libusbhid.a \ 37 $(LIBUSBDEV_PREFIX)/libusbdev.a \ 36 38 $(LIBUSB_PREFIX)/libusb.a 37 39 EXTRA_CFLAGS = \ 38 40 -I$(LIBUSB_PREFIX)/include \ 41 -I$(LIBUSBDEV_PREFIX)/include \ 42 -I$(LIBUSBHID_PREFIX)/include \ 39 43 -I$(LIBUSBVIRT_PREFIX)/include \ 40 44 -I$(LIBDRV_PREFIX)/include -
uspace/drv/ehci-hcd/Makefile
r81db65b ra29529b 28 28 29 29 USPACE_PREFIX = ../.. 30 LIBS = $(LIBDRV_PREFIX)/libdrv.a $(LIBUSB_PREFIX)/libusb.a 31 EXTRA_CFLAGS += -I$(LIBDRV_PREFIX)/include -I$(LIBUSB_PREFIX)/include -I. 30 31 LIBS = \ 32 $(LIBUSBHOST_PREFIX)/libusbhost.a \ 33 $(LIBUSB_PREFIX)/libusb.a \ 34 $(LIBDRV_PREFIX)/libdrv.a 35 EXTRA_CFLAGS += \ 36 -I$(LIBUSB_PREFIX)/include \ 37 -I$(LIBUSBHOST_PREFIX)/include \ 38 -I$(LIBDRV_PREFIX)/include 39 32 40 BINARY = ehci-hcd 33 41 -
uspace/drv/ohci/Makefile
r81db65b ra29529b 28 28 29 29 USPACE_PREFIX = ../.. 30 LIBS = $(LIBDRV_PREFIX)/libdrv.a $(LIBUSB_PREFIX)/libusb.a 31 EXTRA_CFLAGS += -I$(LIBDRV_PREFIX)/include -I$(LIBUSB_PREFIX)/include -I. 30 31 LIBS = \ 32 $(LIBUSBHOST_PREFIX)/libusbhost.a \ 33 $(LIBUSBDEV_PREFIX)/libusbdev.a \ 34 $(LIBUSB_PREFIX)/libusb.a \ 35 $(LIBDRV_PREFIX)/libdrv.a 36 EXTRA_CFLAGS += \ 37 -I$(LIBUSB_PREFIX)/include \ 38 -I$(LIBUSBDEV_PREFIX)/include \ 39 -I$(LIBUSBHOST_PREFIX)/include \ 40 -I$(LIBDRV_PREFIX)/include 41 32 42 BINARY = ohci 33 43 -
uspace/drv/ohci/hc.c
r81db65b ra29529b 40 40 #include <usb/usb.h> 41 41 #include <usb/ddfiface.h> 42 #include <usb/usbdevice.h>43 42 44 43 #include "hc.h" -
uspace/drv/ohci/hw_struct/endpoint_descriptor.h
r81db65b ra29529b 40 40 #include <usb/host/endpoint.h> 41 41 42 #include " utils/malloc32.h"42 #include "../utils/malloc32.h" 43 43 #include "transfer_descriptor.h" 44 44 -
uspace/drv/ohci/hw_struct/transfer_descriptor.c
r81db65b ra29529b 33 33 */ 34 34 #include <usb/usb.h> 35 #include "utils/malloc32.h"36 37 35 #include "transfer_descriptor.h" 38 36 -
uspace/drv/ohci/hw_struct/transfer_descriptor.h
r81db65b ra29529b 37 37 #include <bool.h> 38 38 #include <stdint.h> 39 #include " utils/malloc32.h"39 #include "../utils/malloc32.h" 40 40 41 41 #include "completion_codes.h" -
uspace/drv/ohci/root_hub.c
r81db65b ra29529b 41 41 #include "usb/classes/classes.h" 42 42 #include "usb/devdrv.h" 43 #include "ohci_regs.h" 44 43 45 #include <usb/request.h> 44 46 #include <usb/classes/hub.h> … … 109 111 */ 110 112 static const uint32_t hub_clear_feature_valid_mask = 111 (1 << USB_HUB_FEATURE_C_HUB_LOCAL_POWER)|112 (1 << USB_HUB_FEATURE_C_HUB_OVER_CURRENT);113 RHS_OCIC_FLAG | 114 RHS_CLEAR_PORT_POWER; 113 115 114 116 /** … … 116 118 */ 117 119 static const uint32_t hub_clear_feature_by_writing_one_mask = 118 1 << USB_HUB_FEATURE_C_HUB_LOCAL_POWER; 120 RHS_CLEAR_PORT_POWER; 121 // 1 << USB_HUB_FEATURE_C_HUB_LOCAL_POWER; 119 122 120 123 /** … … 122 125 */ 123 126 static const uint32_t hub_set_feature_valid_mask = 124 (1 << USB_HUB_FEATURE_C_HUB_OVER_CURRENT) | 125 (1 << USB_HUB_FEATURE_C_HUB_LOCAL_POWER); 127 RHS_LPSC_FLAG | 128 RHS_OCIC_FLAG; 129 //(1 << USB_HUB_FEATURE_C_HUB_OVER_CURRENT) | 130 //(1 << USB_HUB_FEATURE_C_HUB_LOCAL_POWER); 126 131 127 132 /** … … 129 134 */ 130 135 static const uint32_t hub_set_feature_direct_mask = 131 (1 << USB_HUB_FEATURE_C_HUB_OVER_CURRENT); 136 RHS_SET_PORT_POWER; 137 //(1 << USB_HUB_FEATURE_C_HUB_OVER_CURRENT); 132 138 133 139 /** … … 135 141 */ 136 142 static const uint32_t port_set_feature_valid_mask = 137 (1 << USB_HUB_FEATURE_PORT_ENABLE)|138 (1 << USB_HUB_FEATURE_PORT_SUSPEND)|139 (1 << USB_HUB_FEATURE_PORT_RESET)|140 (1 << USB_HUB_FEATURE_PORT_POWER);143 RHPS_SET_PORT_ENABLE | 144 RHPS_SET_PORT_SUSPEND | 145 RHPS_SET_PORT_RESET | 146 RHPS_SET_PORT_POWER; 141 147 142 148 /** … … 144 150 */ 145 151 static const uint32_t port_clear_feature_valid_mask = 152 RHPS_CCS_FLAG | 153 RHPS_SET_PORT_SUSPEND | 154 RHPS_POCI_FLAG | 155 RHPS_SET_PORT_POWER | 156 RHPS_CSC_FLAG | 157 RHPS_PESC_FLAG | 158 RHPS_PSSC_FLAG | 159 RHPS_OCIC_FLAG | 160 RHPS_PRSC_FLAG; 161 162 /* 163 146 164 (1 << USB_HUB_FEATURE_PORT_CONNECTION) | 147 (1 << USB_HUB_FEATURE_PORT_SUSPEND) | 148 (1 << USB_HUB_FEATURE_PORT_OVER_CURRENT) | 149 (1 << USB_HUB_FEATURE_PORT_POWER) | 150 (1 << USB_HUB_FEATURE_C_PORT_CONNECTION) | 151 (1 << USB_HUB_FEATURE_C_PORT_ENABLE) | 152 (1 << USB_HUB_FEATURE_C_PORT_SUSPEND) | 153 (1 << USB_HUB_FEATURE_C_PORT_OVER_CURRENT) | 154 (1 << USB_HUB_FEATURE_C_PORT_RESET); 165 (1 << USB_HUB_FEATURE_PORT_SUSPEND) | 166 (1 << USB_HUB_FEATURE_PORT_OVER_CURRENT) | 167 (1 << USB_HUB_FEATURE_PORT_POWER) | 168 (1 << USB_HUB_FEATURE_C_PORT_CONNECTION) | 169 (1 << USB_HUB_FEATURE_C_PORT_ENABLE) | 170 (1 << USB_HUB_FEATURE_C_PORT_SUSPEND) | 171 (1 << USB_HUB_FEATURE_C_PORT_OVER_CURRENT) | 172 (1 << USB_HUB_FEATURE_C_PORT_RESET); 173 */ 155 174 //note that USB_HUB_FEATURE_PORT_POWER bit is translated into 156 //USB_HUB_FEATURE_PORT_LOW_SPEED 175 //USB_HUB_FEATURE_PORT_LOW_SPEED for port set feature request 157 176 158 177 /** 159 178 * bitmask with port status changes 160 179 */ 161 static const uint32_t port_status_change_mask = 162 (1 << USB_HUB_FEATURE_C_PORT_CONNECTION) |163 (1 << USB_HUB_FEATURE_C_PORT_ENABLE) |164 (1 << USB_HUB_FEATURE_C_PORT_OVER_CURRENT) |165 (1 << USB_HUB_FEATURE_C_PORT_RESET) |166 (1 << USB_HUB_FEATURE_C_PORT_SUSPEND);167 180 static const uint32_t port_status_change_mask = RHPS_CHANGE_WC_MASK; 181 /* (1 << USB_HUB_FEATURE_C_PORT_CONNECTION) | 182 (1 << USB_HUB_FEATURE_C_PORT_ENABLE) | 183 (1 << USB_HUB_FEATURE_C_PORT_OVER_CURRENT) | 184 (1 << USB_HUB_FEATURE_C_PORT_RESET) | 185 (1 << USB_HUB_FEATURE_C_PORT_SUSPEND); 186 */ 168 187 169 188 static int create_serialized_hub_descriptor(rh_t *instance); -
uspace/drv/uhci-hcd/Makefile
r81db65b ra29529b 28 28 29 29 USPACE_PREFIX = ../.. 30 LIBS = $(LIBDRV_PREFIX)/libdrv.a $(LIBUSB_PREFIX)/libusb.a 31 EXTRA_CFLAGS += -I$(LIBDRV_PREFIX)/include -I$(LIBUSB_PREFIX)/include -I. 30 31 LIBS = \ 32 $(LIBUSBHOST_PREFIX)/libusbhost.a \ 33 $(LIBUSB_PREFIX)/libusb.a \ 34 $(LIBDRV_PREFIX)/libdrv.a 35 EXTRA_CFLAGS += \ 36 -I$(LIBUSB_PREFIX)/include \ 37 -I$(LIBUSBHOST_PREFIX)/include \ 38 -I$(LIBDRV_PREFIX)/include 39 32 40 BINARY = uhci-hcd 33 41 -
uspace/drv/uhci-hcd/hw_struct/queue_head.h
r81db65b ra29529b 38 38 #include "link_pointer.h" 39 39 #include "transfer_descriptor.h" 40 #include " utils/malloc32.h"40 #include "../utils/malloc32.h" 41 41 42 42 /** This structure is defined in UHCI design guide p. 31 */ -
uspace/drv/uhci-hcd/hw_struct/transfer_descriptor.c
r81db65b ra29529b 36 36 37 37 #include "transfer_descriptor.h" 38 #include " utils/malloc32.h"38 #include "../utils/malloc32.h" 39 39 40 40 /** Initialize Transfer Descriptor -
uspace/drv/uhci-rhd/Makefile
r81db65b ra29529b 28 28 29 29 USPACE_PREFIX = ../.. 30 LIBS = $(LIBDRV_PREFIX)/libdrv.a $(LIBUSB_PREFIX)/libusb.a 31 EXTRA_CFLAGS += -I$(LIBDRV_PREFIX)/include -I$(LIBUSB_PREFIX)/include -I. 30 31 LIBS = \ 32 $(LIBUSBDEV_PREFIX)/libusbdev.a \ 33 $(LIBUSB_PREFIX)/libusb.a \ 34 $(LIBDRV_PREFIX)/libdrv.a 35 EXTRA_CFLAGS += \ 36 -I$(LIBUSB_PREFIX)/include \ 37 -I$(LIBUSBDEV_PREFIX)/include \ 38 -I$(LIBDRV_PREFIX)/include 39 32 40 BINARY = uhci-rhd 33 41 -
uspace/drv/usbflbk/Makefile
r81db65b ra29529b 28 28 29 29 USPACE_PREFIX = ../.. 30 LIBS = $(LIBDRV_PREFIX)/libdrv.a $(LIBUSB_PREFIX)/libusb.a 31 EXTRA_CFLAGS += -I$(LIBDRV_PREFIX)/include -I$(LIBUSB_PREFIX)/include 30 31 LIBS = \ 32 $(LIBUSBDEV_PREFIX)/libusbdev.a \ 33 $(LIBUSB_PREFIX)/libusb.a \ 34 $(LIBDRV_PREFIX)/libdrv.a 35 EXTRA_CFLAGS += \ 36 -I$(LIBUSB_PREFIX)/include \ 37 -I$(LIBUSBDEV_PREFIX)/include \ 38 -I$(LIBDRV_PREFIX)/include 39 32 40 BINARY = usbflbk 33 41 -
uspace/drv/usbhid/Makefile
r81db65b ra29529b 28 28 29 29 USPACE_PREFIX = ../.. 30 LIBS = $(LIBDRV_PREFIX)/libdrv.a $(LIBUSB_PREFIX)/libusb.a 31 EXTRA_CFLAGS += -I$(LIBDRV_PREFIX)/include -I$(LIBUSB_PREFIX)/include -I. 30 31 LIBS = \ 32 $(LIBUSBHID_PREFIX)/libusbhid.a \ 33 $(LIBUSBDEV_PREFIX)/libusbdev.a \ 34 $(LIBUSB_PREFIX)/libusb.a \ 35 $(LIBDRV_PREFIX)/libdrv.a 36 EXTRA_CFLAGS += \ 37 -I. \ 38 -I$(LIBUSB_PREFIX)/include \ 39 -I$(LIBUSBDEV_PREFIX)/include \ 40 -I$(LIBUSBHID_PREFIX)/include \ 41 -I$(LIBDRV_PREFIX)/include 42 32 43 BINARY = usbhid 33 44 -
uspace/drv/usbhub/Makefile
r81db65b ra29529b 28 28 29 29 USPACE_PREFIX = ../.. 30 LIBS = $(LIBDRV_PREFIX)/libdrv.a $(LIBUSB_PREFIX)/libusb.a 31 EXTRA_CFLAGS += -I$(LIBDRV_PREFIX)/include -I$(LIBUSB_PREFIX)/include 30 31 LIBS = \ 32 $(LIBUSBDEV_PREFIX)/libusbdev.a \ 33 $(LIBUSB_PREFIX)/libusb.a \ 34 $(LIBDRV_PREFIX)/libdrv.a 35 EXTRA_CFLAGS += \ 36 -I$(LIBUSB_PREFIX)/include \ 37 -I$(LIBUSBDEV_PREFIX)/include \ 38 -I$(LIBDRV_PREFIX)/include 39 32 40 BINARY = usbhub 33 41 -
uspace/drv/usbhub/usbhub.c
r81db65b ra29529b 71 71 72 72 static void usb_hub_process_global_interrupt(usb_hub_info_t * hub_info); 73 74 static void usb_hub_polling_terminted_callback(usb_device_t * device, 75 bool was_error, void * data); 73 76 74 77 … … 351 354 rc = usb_device_auto_poll(hub_info->usb_device, 0, 352 355 hub_port_changes_callback, ((hub_info->port_count + 1) / 8) + 1, 353 NULL, hub_info);356 usb_hub_polling_terminted_callback, hub_info); 354 357 if (rc != EOK) { 355 358 usb_log_error("Failed to create polling fibril: %s.\n", … … 489 492 490 493 /** 494 * callback called from hub polling fibril when the fibril terminates 495 * 496 * Should perform a cleanup - deletes hub_info. 497 * @param device usb device afected 498 * @param was_error indicates that the fibril is stoped due to an error 499 * @param data pointer to usb_hub_info_t structure 500 */ 501 static void usb_hub_polling_terminted_callback(usb_device_t * device, 502 bool was_error, void * data){ 503 usb_hub_info_t * hub_info = data; 504 if(!hub_info) return; 505 free(hub_info->ports); 506 free(hub_info); 507 } 508 509 510 511 512 /** 491 513 * @} 492 514 */ -
uspace/drv/usbkbd/Makefile
r81db65b ra29529b 28 28 29 29 USPACE_PREFIX = ../.. 30 LIBS = $(LIBDRV_PREFIX)/libdrv.a $(LIBUSB_PREFIX)/libusb.a 31 EXTRA_CFLAGS += -I$(LIBDRV_PREFIX)/include -I$(LIBUSB_PREFIX)/include -I. 30 31 LIBS = \ 32 $(LIBUSBHID_PREFIX)/libusbhid.a \ 33 $(LIBUSBDEV_PREFIX)/libusbdev.a \ 34 $(LIBUSB_PREFIX)/libusb.a \ 35 $(LIBDRV_PREFIX)/libdrv.a 36 EXTRA_CFLAGS += \ 37 -I. \ 38 -I$(LIBUSB_PREFIX)/include \ 39 -I$(LIBUSBDEV_PREFIX)/include \ 40 -I$(LIBUSBHID_PREFIX)/include \ 41 -I$(LIBDRV_PREFIX)/include 42 32 43 BINARY = usbkbd 33 44 -
uspace/drv/usbmast/Makefile
r81db65b ra29529b 28 28 29 29 USPACE_PREFIX = ../.. 30 LIBS = $(LIBDRV_PREFIX)/libdrv.a $(LIBUSB_PREFIX)/libusb.a 31 EXTRA_CFLAGS += -I$(LIBDRV_PREFIX)/include -I$(LIBUSB_PREFIX)/include 30 31 LIBS = \ 32 $(LIBUSBDEV_PREFIX)/libusbdev.a \ 33 $(LIBUSB_PREFIX)/libusb.a \ 34 $(LIBDRV_PREFIX)/libdrv.a 35 EXTRA_CFLAGS += \ 36 -I$(LIBUSB_PREFIX)/include \ 37 -I$(LIBUSBDEV_PREFIX)/include \ 38 -I$(LIBDRV_PREFIX)/include 39 32 40 BINARY = usbmast 33 41 34 42 SOURCES = \ 43 inquiry.c \ 35 44 main.c \ 36 45 mast.c -
uspace/drv/usbmast/main.c
r81db65b ra29529b 75 75 }; 76 76 77 #define BITS_GET_MASK(type, bitcount) (((type)(1 << (bitcount)))-1)78 #define BITS_GET_MID_MASK(type, bitcount, offset) \79 ((type)( BITS_GET_MASK(type, (bitcount) + (offset)) - BITS_GET_MASK(type, bitcount) ))80 #define BITS_GET(type, number, bitcount, offset) \81 ((type)( (number) & (BITS_GET_MID_MASK(type, bitcount, offset)) ) >> (offset))82 83 #define INQUIRY_RESPONSE_LENGTH 3584 85 static void try_inquiry(usb_device_t *dev)86 {87 scsi_cmd_inquiry_t inquiry = {88 .op_code = 0x12,89 .lun_evpd = 0,90 .page_code = 0,91 .alloc_length = INQUIRY_RESPONSE_LENGTH,92 .ctrl = 093 };94 size_t response_len;95 uint8_t response[INQUIRY_RESPONSE_LENGTH];96 97 int rc;98 99 rc = usb_massstor_data_in(GET_BULK_IN(dev), GET_BULK_OUT(dev),100 0xDEADBEEF, 0, (uint8_t *) &inquiry, sizeof(inquiry),101 response, INQUIRY_RESPONSE_LENGTH, &response_len);102 103 if (rc != EOK) {104 usb_log_error("Failed to probe device %s using %s: %s.\n",105 dev->ddf_dev->name, "SCSI:INQUIRY", str_error(rc));106 return;107 }108 109 if (response_len < 8) {110 usb_log_error("The SCSI response is too short.\n");111 return;112 }113 114 /*115 * This is an ugly part of the code. We will parse the returned116 * data by hand and try to get as many useful data as possible.117 */118 int device_type = BITS_GET(uint8_t, response[0], 5, 0);119 int removable = BITS_GET(uint8_t, response[1], 1, 7);120 121 usb_log_info("SCSI information for device `%s':\n", dev->ddf_dev->name);122 usb_log_info(" - peripheral device type: %d\n", device_type);123 usb_log_info(" - removable: %s\n", removable ? "yes" : "no");124 125 if (response_len < 32) {126 return;127 }128 129 char dev_vendor[9];130 str_ncpy(dev_vendor, 9, (const char *) &response[8], 8);131 usb_log_info(" - vendor: '%s'\n", dev_vendor);132 133 char dev_product[9];134 str_ncpy(dev_product, 9, (const char *) &response[16], 8);135 usb_log_info(" - product: '%s'\n", dev_vendor);136 }137 138 77 /** Callback when new device is attached and recognized as a mass storage. 139 78 * … … 168 107 (size_t) dev->pipes[BULK_OUT_EP].descriptor->max_packet_size); 169 108 170 try_inquiry(dev); 109 size_t lun_count = usb_masstor_get_lun_count(dev); 110 111 usb_massstor_inquiry_result_t inquiry; 112 rc = usb_massstor_inquiry(dev, BULK_IN_EP, BULK_OUT_EP, &inquiry); 113 if (rc != EOK) { 114 usb_log_warning("Failed to inquiry device `%s': %s.\n", 115 dev->ddf_dev->name, str_error(rc)); 116 return EOK; 117 } 118 119 usb_log_info("Mass storage `%s': " \ 120 "`%s' by `%s' is %s (%s), %zu LUN(s).\n", 121 dev->ddf_dev->name, 122 inquiry.product_and_revision, inquiry.vendor_id, 123 usb_str_masstor_scsi_peripheral_device_type(inquiry.peripheral_device_type), 124 inquiry.removable ? "removable" : "non-removable", 125 lun_count); 171 126 172 127 return EOK; -
uspace/drv/usbmast/mast.c
r81db65b ra29529b 40 40 #include <str_error.h> 41 41 #include <usb/debug.h> 42 #include <usb/request.h> 42 43 43 44 bool usb_mast_verbose = true; … … 63 64 * @return Error code. 64 65 */ 65 int usb_massstor_data_in(usb_pipe_t *bulk_in_pipe, usb_pipe_t *bulk_out_pipe, 66 int usb_massstor_data_in(usb_device_t *dev, 67 size_t bulk_in_pipe_index, size_t bulk_out_pipe_index, 66 68 uint32_t tag, uint8_t lun, void *cmd, size_t cmd_size, 67 69 void *in_buffer, size_t in_buffer_size, size_t *received_size) … … 69 71 int rc; 70 72 size_t act_size; 73 usb_pipe_t *bulk_in_pipe = dev->pipes[bulk_in_pipe_index].pipe; 74 usb_pipe_t *bulk_out_pipe = dev->pipes[bulk_out_pipe_index].pipe; 71 75 72 76 /* Prepare CBW - command block wrapper */ … … 135 139 } 136 140 141 /** Perform bulk-only mass storage reset. 142 * 143 * @param dev Device to be reseted. 144 * @return Error code. 145 */ 146 int usb_massstor_reset(usb_device_t *dev) 147 { 148 return usb_control_request_set(&dev->ctrl_pipe, 149 USB_REQUEST_TYPE_CLASS, USB_REQUEST_RECIPIENT_INTERFACE, 150 0xFF, 0, dev->interface_no, NULL, 0); 151 } 152 153 /** Perform complete reset recovery of bulk-only mass storage. 154 * 155 * Notice that no error is reported because if this fails, the error 156 * would reappear on next transaction somehow. 157 * 158 * @param dev Device to be reseted. 159 * @param bulk_in_idx Index of bulk in pipe. 160 * @param bulk_out_idx Index of bulk out pipe. 161 */ 162 void usb_massstor_reset_recovery(usb_device_t *dev, 163 size_t bulk_in_idx, size_t bulk_out_idx) 164 { 165 /* We would ignore errors here because if this fails 166 * we are doomed anyway and any following transaction would fail. 167 */ 168 usb_massstor_reset(dev); 169 usb_pipe_clear_halt(&dev->ctrl_pipe, dev->pipes[bulk_in_idx].pipe); 170 usb_pipe_clear_halt(&dev->ctrl_pipe, dev->pipes[bulk_out_idx].pipe); 171 } 172 173 /** Get max LUN of a mass storage device. 174 * 175 * @see usb_masstor_get_lun_count 176 * 177 * @warning Error from this command does not necessarily indicate malfunction 178 * of the device. Device does not need to support this request. 179 * You shall rather use usb_masstor_get_lun_count. 180 * 181 * @param dev Mass storage device. 182 * @return Error code of maximum LUN (index, not count). 183 */ 184 int usb_massstor_get_max_lun(usb_device_t *dev) 185 { 186 uint8_t max_lun; 187 size_t data_recv_len; 188 int rc = usb_control_request_get(&dev->ctrl_pipe, 189 USB_REQUEST_TYPE_CLASS, USB_REQUEST_RECIPIENT_INTERFACE, 190 0xFE, 0, dev->interface_no, &max_lun, 1, &data_recv_len); 191 if (rc != EOK) { 192 return rc; 193 } 194 if (data_recv_len != 1) { 195 return EEMPTY; 196 } 197 return (int) max_lun; 198 } 199 200 /** Get number of LUNs supported by mass storage device. 201 * 202 * @warning This function hides any error during the request 203 * (typically that shall not be a problem). 204 * 205 * @param dev Mass storage device. 206 * @return Number of LUNs. 207 */ 208 size_t usb_masstor_get_lun_count(usb_device_t *dev) 209 { 210 int max_lun = usb_massstor_get_max_lun(dev); 211 if (max_lun < 0) { 212 max_lun = 1; 213 } else { 214 max_lun++; 215 } 216 217 return (size_t) max_lun; 218 } 219 137 220 /** 138 221 * @} -
uspace/drv/usbmast/mast.h
r81db65b ra29529b 40 40 #include <usb/usb.h> 41 41 #include <usb/pipes.h> 42 #include <usb/devdrv.h> 42 43 43 int usb_massstor_data_in(usb_pipe_t *, usb_pipe_t *, uint32_t, uint8_t, 44 void *, size_t, void *, size_t, size_t *); 44 /** Result of SCSI INQUIRY command. 45 * This is already parsed structure, not the original buffer returned by 46 * the device. 47 */ 48 typedef struct { 49 /** SCSI peripheral device type. */ 50 int peripheral_device_type; 51 /** Whether the device is removable. */ 52 bool removable; 53 /** Vendor ID string. */ 54 char vendor_id[9]; 55 /** Product ID and product revision string. */ 56 char product_and_revision[12]; 57 } usb_massstor_inquiry_result_t; 58 59 int usb_massstor_data_in(usb_device_t *dev, size_t, size_t, 60 uint32_t, uint8_t, void *, size_t, void *, size_t, size_t *); 61 int usb_massstor_reset(usb_device_t *); 62 void usb_massstor_reset_recovery(usb_device_t *, size_t, size_t); 63 int usb_massstor_get_max_lun(usb_device_t *); 64 size_t usb_masstor_get_lun_count(usb_device_t *); 65 int usb_massstor_inquiry(usb_device_t *, size_t, size_t, 66 usb_massstor_inquiry_result_t *); 67 const char *usb_str_masstor_scsi_peripheral_device_type(int); 45 68 46 69 #endif -
uspace/drv/usbmid/Makefile
r81db65b ra29529b 28 28 29 29 USPACE_PREFIX = ../.. 30 LIBS = $(LIBDRV_PREFIX)/libdrv.a $(LIBUSB_PREFIX)/libusb.a 31 EXTRA_CFLAGS += -I$(LIBDRV_PREFIX)/include -I$(LIBUSB_PREFIX)/include 30 31 LIBS = \ 32 $(LIBUSBDEV_PREFIX)/libusbdev.a \ 33 $(LIBUSB_PREFIX)/libusb.a \ 34 $(LIBDRV_PREFIX)/libdrv.a 35 EXTRA_CFLAGS += \ 36 -I$(LIBUSB_PREFIX)/include \ 37 -I$(LIBUSBDEV_PREFIX)/include \ 38 -I$(LIBDRV_PREFIX)/include 39 32 40 BINARY = usbmid 33 41 -
uspace/drv/usbmouse/Makefile
r81db65b ra29529b 28 28 29 29 USPACE_PREFIX = ../.. 30 LIBS = $(LIBDRV_PREFIX)/libdrv.a $(LIBUSB_PREFIX)/libusb.a 31 EXTRA_CFLAGS += -I$(LIBDRV_PREFIX)/include -I$(LIBUSB_PREFIX)/include -I. 30 31 LIBS = \ 32 $(LIBUSBHID_PREFIX)/libusbhid.a \ 33 $(LIBUSBDEV_PREFIX)/libusbdev.a \ 34 $(LIBUSB_PREFIX)/libusb.a \ 35 $(LIBDRV_PREFIX)/libdrv.a 36 EXTRA_CFLAGS += \ 37 -I$(LIBUSB_PREFIX)/include \ 38 -I$(LIBUSBDEV_PREFIX)/include \ 39 -I$(LIBUSBHID_PREFIX)/include \ 40 -I$(LIBDRV_PREFIX)/include 32 41 33 42 BINARY = usbmouse -
uspace/drv/vhc/Makefile
r81db65b ra29529b 29 29 USPACE_PREFIX = ../.. 30 30 LIBS = \ 31 $(LIBUSBDEV_PREFIX)/libusbdev.a \ 32 $(LIBUSBHOST_PREFIX)/libusbhost.a \ 31 33 $(LIBUSB_PREFIX)/libusb.a \ 32 34 $(LIBUSBVIRT_PREFIX)/libusbvirt.a \ … … 34 36 EXTRA_CFLAGS += \ 35 37 -I$(LIBUSBVIRT_PREFIX)/include \ 38 -I$(LIBUSBDEV_PREFIX)/include \ 39 -I$(LIBUSBHOST_PREFIX)/include \ 36 40 -I$(LIBUSB_PREFIX)/include \ 37 41 -I$(LIBDRV_PREFIX)/include -
uspace/lib/usb/Makefile
r81db65b ra29529b 29 29 USPACE_PREFIX = ../.. 30 30 LIBRARY = libusb 31 LIBS = $(LIBDRV_PREFIX)/libdrv.a 32 EXTRA_CFLAGS += -I$(LIBDRV_PREFIX)/include -Iinclude 31 EXTRA_CFLAGS += \ 32 -I$(LIBDRV_PREFIX)/include \ 33 -Iinclude 33 34 34 35 SOURCES = \ 35 src/addrkeep.c \36 src/altiface.c \37 36 src/class.c \ 38 37 src/ddfiface.c \ 39 38 src/debug.c \ 40 src/devdrv.c \ 41 src/devpoll.c \ 42 src/dp.c \ 39 src/driver.c \ 43 40 src/dump.c \ 44 src/hidiface.c \45 src/hidpath.c \46 src/hidparser.c \47 src/hiddescriptor.c \48 41 src/host.c \ 49 src/hub.c \ 50 src/pipepriv.c \ 51 src/pipes.c \ 52 src/pipesinit.c \ 53 src/pipesio.c \ 54 src/recognise.c \ 55 src/request.c \ 56 src/usb.c \ 57 src/usbdevice.c \ 58 src/hidreq.c \ 59 src/hidreport.c \ 60 src/host/device_keeper.c \ 61 src/host/batch.c \ 62 src/host/endpoint.c \ 63 src/host/usb_endpoint_manager.c 42 src/usb.c 64 43 65 44 include $(USPACE_PREFIX)/Makefile.common -
uspace/lib/usb/include/usb/ddfiface.h
r81db65b ra29529b 37 37 38 38 #include <sys/types.h> 39 #include <usb/usbdevice.h>40 39 #include <usb_iface.h> 41 40 -
uspace/lib/usb/include/usb/descriptor.h
r81db65b ra29529b 167 167 } __attribute__ ((packed)) usb_standard_endpoint_descriptor_t; 168 168 169 /** Part of standard USB HID descriptor specifying one class descriptor. 170 * 171 * (See HID Specification, p.22) 172 */ 173 typedef struct { 174 /** Type of class-specific descriptor (Report or Physical). */ 175 uint8_t type; 176 /** Length of class-specific descriptor in bytes. */ 177 uint16_t length; 178 } __attribute__ ((packed)) usb_standard_hid_class_descriptor_info_t; 179 180 /** Standard USB HID descriptor. 181 * 182 * (See HID Specification, p.22) 183 * 184 * It is actually only the "header" of the descriptor, it does not contain 185 * the last two mandatory fields (type and length of the first class-specific 186 * descriptor). 187 */ 188 typedef struct { 189 /** Total size of this descriptor in bytes. 190 * 191 * This includes all class-specific descriptor info - type + length 192 * for each descriptor. 193 */ 194 uint8_t length; 195 /** Descriptor type (USB_DESCTYPE_HID). */ 196 uint8_t descriptor_type; 197 /** HID Class Specification release. */ 198 uint16_t spec_release; 199 /** Country code of localized hardware. */ 200 uint8_t country_code; 201 /** Total number of class-specific (i.e. Report and Physical) 202 * descriptors. 203 * 204 * @note There is always only one Report descriptor. 205 */ 206 uint8_t class_desc_count; 207 /** First mandatory class descriptor (Report) info. */ 208 usb_standard_hid_class_descriptor_info_t report_desc_info; 209 } __attribute__ ((packed)) usb_standard_hid_descriptor_t; 210 169 211 #endif 170 212 /** -
uspace/lib/usb/src/ddfiface.c
r81db65b ra29529b 37 37 #include <async.h> 38 38 #include <usb/ddfiface.h> 39 #include <usb/driver.h> 39 40 #include <usb/debug.h> 40 41 #include <errno.h> -
uspace/lib/usb/src/dump.c
r81db65b ra29529b 41 41 #include <usb/descriptor.h> 42 42 #include <usb/classes/classes.h> 43 #include <usb/classes/hid.h>44 43 45 44 /** Mapping between descriptor id and dumping function. */ -
uspace/lib/usbvirt/Makefile
r81db65b ra29529b 30 30 LIBRARY = libusbvirt 31 31 32 EXTRA_CFLAGS = -I$(LIBUSB_PREFIX)/include -I$(LIBDRV_PREFIX)/include -Iinclude 32 EXTRA_CFLAGS = \ 33 -I$(LIBDRV_PREFIX)/include \ 34 -I$(LIBUSB_PREFIX)/include \ 35 -I$(LIBUSBDEV_PREFIX)/include \ 36 -Iinclude 33 37 34 38 SOURCES = \
Note:
See TracChangeset
for help on using the changeset viewer.