Changes in / [a29529b:81db65b] in mainline
- Location:
- uspace
- Files:
-
- 51 added
- 55 deleted
- 39 edited
Legend:
- Unmodified
- Added
- Removed
-
uspace/Makefile
ra29529b r81db65b 179 179 ifeq ($(UARCH),amd64) 180 180 LIBS += lib/usb 181 LIBS += lib/usbhost182 LIBS += lib/usbdev183 LIBS += lib/usbhid184 181 LIBS += lib/usbvirt 185 182 endif … … 187 184 ifeq ($(UARCH),ia32) 188 185 LIBS += lib/usb 189 LIBS += lib/usbhost190 LIBS += lib/usbdev191 LIBS += lib/usbhid192 186 LIBS += lib/usbvirt 193 187 endif -
uspace/Makefile.common
ra29529b r81db65b 88 88 89 89 LIBUSB_PREFIX = $(LIB_PREFIX)/usb 90 LIBUSBHOST_PREFIX = $(LIB_PREFIX)/usbhost91 LIBUSBDEV_PREFIX = $(LIB_PREFIX)/usbdev92 LIBUSBHID_PREFIX = $(LIB_PREFIX)/usbhid93 90 LIBUSBVIRT_PREFIX = $(LIB_PREFIX)/usbvirt 94 91 LIBDRV_PREFIX = $(LIB_PREFIX)/drv -
uspace/app/lsusb/Makefile
ra29529b r81db65b 30 30 BINARY = lsusb 31 31 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 32 LIBS = $(LIBUSB_PREFIX)/libusb.a $(LIBDRV_PREFIX)/libdrv.a 33 EXTRA_CFLAGS = -I$(LIBUSB_PREFIX)/include -I$(LIBDRV_PREFIX)/include 40 34 41 35 SOURCES = \ -
uspace/app/tester/Makefile
ra29529b r81db65b 31 31 BINARY = tester 32 32 33 LIBS += $(LIBUSB_PREFIX)/libusb.a 34 EXTRA_CFLAGS += -I$(LIBUSB_PREFIX)/include 35 33 36 SOURCES = \ 34 37 tester.c \ 38 adt/usbaddrkeep.c \ 35 39 thread/thread1.c \ 36 40 print/print1.c \ -
uspace/app/tester/tester.c
ra29529b r81db65b 64 64 #include "mm/mapping1.def" 65 65 #include "hw/serial/serial1.def" 66 #include "adt/usbaddrkeep.def" 66 67 #include "hw/misc/virtchar1.def" 67 68 #include "devs/devman1.def" -
uspace/app/tester/tester.h
ra29529b r81db65b 80 80 extern const char *test_mapping1(void); 81 81 extern const char *test_serial1(void); 82 extern const char *test_usbaddrkeep(void); 82 83 extern const char *test_virtchar1(void); 83 84 extern const char *test_devman1(void); -
uspace/app/usbinfo/Makefile
ra29529b r81db65b 30 30 BINARY = usbinfo 31 31 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 32 LIBS = $(LIBUSB_PREFIX)/libusb.a $(LIBDRV_PREFIX)/libdrv.a 33 EXTRA_CFLAGS = -I$(LIBUSB_PREFIX)/include -I$(LIBDRV_PREFIX)/include 40 34 41 35 SOURCES = \ -
uspace/app/usbinfo/info.c
ra29529b r81db65b 41 41 #include <usb/request.h> 42 42 #include <usb/classes/classes.h> 43 #include <usb/classes/hid.h> 43 44 #include <usb/classes/hub.h> 44 45 #include "usbinfo.h" -
uspace/app/usbinfo/main.c
ra29529b r81db65b 46 46 #include <usb/pipes.h> 47 47 #include <usb/host.h> 48 #include <usb/driver.h>49 48 #include "usbinfo.h" 50 49 -
uspace/app/vuhid/Makefile
ra29529b r81db65b 34 34 LIBS = \ 35 35 $(LIBUSBVIRT_PREFIX)/libusbvirt.a \ 36 $(LIBUSBHID_PREFIX)/libusbhid.a \37 $(LIBUSBDEV_PREFIX)/libusbdev.a \38 36 $(LIBUSB_PREFIX)/libusb.a 39 37 EXTRA_CFLAGS = \ 40 38 -I$(LIBUSB_PREFIX)/include \ 41 -I$(LIBUSBDEV_PREFIX)/include \42 -I$(LIBUSBHID_PREFIX)/include \43 39 -I$(LIBUSBVIRT_PREFIX)/include \ 44 40 -I$(LIBDRV_PREFIX)/include -
uspace/drv/ehci-hcd/Makefile
ra29529b r81db65b 28 28 29 29 USPACE_PREFIX = ../.. 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 30 LIBS = $(LIBDRV_PREFIX)/libdrv.a $(LIBUSB_PREFIX)/libusb.a 31 EXTRA_CFLAGS += -I$(LIBDRV_PREFIX)/include -I$(LIBUSB_PREFIX)/include -I. 40 32 BINARY = ehci-hcd 41 33 -
uspace/drv/ohci/Makefile
ra29529b r81db65b 28 28 29 29 USPACE_PREFIX = ../.. 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 30 LIBS = $(LIBDRV_PREFIX)/libdrv.a $(LIBUSB_PREFIX)/libusb.a 31 EXTRA_CFLAGS += -I$(LIBDRV_PREFIX)/include -I$(LIBUSB_PREFIX)/include -I. 42 32 BINARY = ohci 43 33 -
uspace/drv/ohci/hc.c
ra29529b r81db65b 40 40 #include <usb/usb.h> 41 41 #include <usb/ddfiface.h> 42 #include <usb/usbdevice.h> 42 43 43 44 #include "hc.h" -
uspace/drv/ohci/hw_struct/endpoint_descriptor.h
ra29529b r81db65b 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
ra29529b r81db65b 33 33 */ 34 34 #include <usb/usb.h> 35 #include "utils/malloc32.h" 36 35 37 #include "transfer_descriptor.h" 36 38 -
uspace/drv/ohci/hw_struct/transfer_descriptor.h
ra29529b r81db65b 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
ra29529b r81db65b 41 41 #include "usb/classes/classes.h" 42 42 #include "usb/devdrv.h" 43 #include "ohci_regs.h"44 45 43 #include <usb/request.h> 46 44 #include <usb/classes/hub.h> … … 111 109 */ 112 110 static const uint32_t hub_clear_feature_valid_mask = 113 RHS_OCIC_FLAG|114 RHS_CLEAR_PORT_POWER;111 (1 << USB_HUB_FEATURE_C_HUB_LOCAL_POWER) | 112 (1 << USB_HUB_FEATURE_C_HUB_OVER_CURRENT); 115 113 116 114 /** … … 118 116 */ 119 117 static const uint32_t hub_clear_feature_by_writing_one_mask = 120 RHS_CLEAR_PORT_POWER; 121 // 1 << USB_HUB_FEATURE_C_HUB_LOCAL_POWER; 118 1 << USB_HUB_FEATURE_C_HUB_LOCAL_POWER; 122 119 123 120 /** … … 125 122 */ 126 123 static const uint32_t hub_set_feature_valid_mask = 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); 124 (1 << USB_HUB_FEATURE_C_HUB_OVER_CURRENT) | 125 (1 << USB_HUB_FEATURE_C_HUB_LOCAL_POWER); 131 126 132 127 /** … … 134 129 */ 135 130 static const uint32_t hub_set_feature_direct_mask = 136 RHS_SET_PORT_POWER; 137 //(1 << USB_HUB_FEATURE_C_HUB_OVER_CURRENT); 131 (1 << USB_HUB_FEATURE_C_HUB_OVER_CURRENT); 138 132 139 133 /** … … 141 135 */ 142 136 static const uint32_t port_set_feature_valid_mask = 143 RHPS_SET_PORT_ENABLE|144 RHPS_SET_PORT_SUSPEND|145 RHPS_SET_PORT_RESET|146 RHPS_SET_PORT_POWER;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); 147 141 148 142 /** … … 150 144 */ 151 145 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 164 146 (1 << USB_HUB_FEATURE_PORT_CONNECTION) | 165 (1 << USB_HUB_FEATURE_PORT_SUSPEND) | 166 (1 << USB_HUB_FEATURE_PORT_OVER_CURRENT) | 167 (1 << USB_HUB_FEATURE_PORT_POWER) | 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); 155 //note that USB_HUB_FEATURE_PORT_POWER bit is translated into 156 //USB_HUB_FEATURE_PORT_LOW_SPEED 157 158 /** 159 * bitmask with port status changes 160 */ 161 static const uint32_t port_status_change_mask = 168 162 (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 */ 174 //note that USB_HUB_FEATURE_PORT_POWER bit is translated into 175 //USB_HUB_FEATURE_PORT_LOW_SPEED for port set feature request 176 177 /** 178 * bitmask with port status changes 179 */ 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 */ 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 187 168 188 169 static int create_serialized_hub_descriptor(rh_t *instance); -
uspace/drv/uhci-hcd/Makefile
ra29529b r81db65b 28 28 29 29 USPACE_PREFIX = ../.. 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 30 LIBS = $(LIBDRV_PREFIX)/libdrv.a $(LIBUSB_PREFIX)/libusb.a 31 EXTRA_CFLAGS += -I$(LIBDRV_PREFIX)/include -I$(LIBUSB_PREFIX)/include -I. 40 32 BINARY = uhci-hcd 41 33 -
uspace/drv/uhci-hcd/hw_struct/queue_head.h
ra29529b r81db65b 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
ra29529b r81db65b 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
ra29529b r81db65b 28 28 29 29 USPACE_PREFIX = ../.. 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 30 LIBS = $(LIBDRV_PREFIX)/libdrv.a $(LIBUSB_PREFIX)/libusb.a 31 EXTRA_CFLAGS += -I$(LIBDRV_PREFIX)/include -I$(LIBUSB_PREFIX)/include -I. 40 32 BINARY = uhci-rhd 41 33 -
uspace/drv/usbflbk/Makefile
ra29529b r81db65b 28 28 29 29 USPACE_PREFIX = ../.. 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 30 LIBS = $(LIBDRV_PREFIX)/libdrv.a $(LIBUSB_PREFIX)/libusb.a 31 EXTRA_CFLAGS += -I$(LIBDRV_PREFIX)/include -I$(LIBUSB_PREFIX)/include 40 32 BINARY = usbflbk 41 33 -
uspace/drv/usbhid/Makefile
ra29529b r81db65b 28 28 29 29 USPACE_PREFIX = ../.. 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 30 LIBS = $(LIBDRV_PREFIX)/libdrv.a $(LIBUSB_PREFIX)/libusb.a 31 EXTRA_CFLAGS += -I$(LIBDRV_PREFIX)/include -I$(LIBUSB_PREFIX)/include -I. 43 32 BINARY = usbhid 44 33 -
uspace/drv/usbhub/Makefile
ra29529b r81db65b 28 28 29 29 USPACE_PREFIX = ../.. 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 30 LIBS = $(LIBDRV_PREFIX)/libdrv.a $(LIBUSB_PREFIX)/libusb.a 31 EXTRA_CFLAGS += -I$(LIBDRV_PREFIX)/include -I$(LIBUSB_PREFIX)/include 40 32 BINARY = usbhub 41 33 -
uspace/drv/usbhub/usbhub.c
ra29529b r81db65b 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);76 73 77 74 … … 354 351 rc = usb_device_auto_poll(hub_info->usb_device, 0, 355 352 hub_port_changes_callback, ((hub_info->port_count + 1) / 8) + 1, 356 usb_hub_polling_terminted_callback, hub_info);353 NULL, hub_info); 357 354 if (rc != EOK) { 358 355 usb_log_error("Failed to create polling fibril: %s.\n", … … 492 489 493 490 /** 494 * callback called from hub polling fibril when the fibril terminates495 *496 * Should perform a cleanup - deletes hub_info.497 * @param device usb device afected498 * @param was_error indicates that the fibril is stoped due to an error499 * @param data pointer to usb_hub_info_t structure500 */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 /**513 491 * @} 514 492 */ -
uspace/drv/usbkbd/Makefile
ra29529b r81db65b 28 28 29 29 USPACE_PREFIX = ../.. 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 30 LIBS = $(LIBDRV_PREFIX)/libdrv.a $(LIBUSB_PREFIX)/libusb.a 31 EXTRA_CFLAGS += -I$(LIBDRV_PREFIX)/include -I$(LIBUSB_PREFIX)/include -I. 43 32 BINARY = usbkbd 44 33 -
uspace/drv/usbmast/Makefile
ra29529b r81db65b 28 28 29 29 USPACE_PREFIX = ../.. 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 30 LIBS = $(LIBDRV_PREFIX)/libdrv.a $(LIBUSB_PREFIX)/libusb.a 31 EXTRA_CFLAGS += -I$(LIBDRV_PREFIX)/include -I$(LIBUSB_PREFIX)/include 40 32 BINARY = usbmast 41 33 42 34 SOURCES = \ 43 inquiry.c \44 35 main.c \ 45 36 mast.c -
uspace/drv/usbmast/main.c
ra29529b r81db65b 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 35 84 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 = 0 93 }; 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 returned 116 * 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 77 138 /** Callback when new device is attached and recognized as a mass storage. 78 139 * … … 107 168 (size_t) dev->pipes[BULK_OUT_EP].descriptor->max_packet_size); 108 169 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); 170 try_inquiry(dev); 126 171 127 172 return EOK; -
uspace/drv/usbmast/mast.c
ra29529b r81db65b 40 40 #include <str_error.h> 41 41 #include <usb/debug.h> 42 #include <usb/request.h>43 42 44 43 bool usb_mast_verbose = true; … … 64 63 * @return Error code. 65 64 */ 66 int usb_massstor_data_in(usb_device_t *dev, 67 size_t bulk_in_pipe_index, size_t bulk_out_pipe_index, 65 int usb_massstor_data_in(usb_pipe_t *bulk_in_pipe, usb_pipe_t *bulk_out_pipe, 68 66 uint32_t tag, uint8_t lun, void *cmd, size_t cmd_size, 69 67 void *in_buffer, size_t in_buffer_size, size_t *received_size) … … 71 69 int rc; 72 70 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;75 71 76 72 /* Prepare CBW - command block wrapper */ … … 139 135 } 140 136 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 error156 * 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 fails166 * 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_count176 *177 * @warning Error from this command does not necessarily indicate malfunction178 * 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 request203 * (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 220 137 /** 221 138 * @} -
uspace/drv/usbmast/mast.h
ra29529b r81db65b 40 40 #include <usb/usb.h> 41 41 #include <usb/pipes.h> 42 #include <usb/devdrv.h>43 42 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); 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 *); 68 45 69 46 #endif -
uspace/drv/usbmid/Makefile
ra29529b r81db65b 28 28 29 29 USPACE_PREFIX = ../.. 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 30 LIBS = $(LIBDRV_PREFIX)/libdrv.a $(LIBUSB_PREFIX)/libusb.a 31 EXTRA_CFLAGS += -I$(LIBDRV_PREFIX)/include -I$(LIBUSB_PREFIX)/include 40 32 BINARY = usbmid 41 33 -
uspace/drv/usbmouse/Makefile
ra29529b r81db65b 28 28 29 29 USPACE_PREFIX = ../.. 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 30 LIBS = $(LIBDRV_PREFIX)/libdrv.a $(LIBUSB_PREFIX)/libusb.a 31 EXTRA_CFLAGS += -I$(LIBDRV_PREFIX)/include -I$(LIBUSB_PREFIX)/include -I. 41 32 42 33 BINARY = usbmouse -
uspace/drv/vhc/Makefile
ra29529b r81db65b 29 29 USPACE_PREFIX = ../.. 30 30 LIBS = \ 31 $(LIBUSBDEV_PREFIX)/libusbdev.a \32 $(LIBUSBHOST_PREFIX)/libusbhost.a \33 31 $(LIBUSB_PREFIX)/libusb.a \ 34 32 $(LIBUSBVIRT_PREFIX)/libusbvirt.a \ … … 36 34 EXTRA_CFLAGS += \ 37 35 -I$(LIBUSBVIRT_PREFIX)/include \ 38 -I$(LIBUSBDEV_PREFIX)/include \39 -I$(LIBUSBHOST_PREFIX)/include \40 36 -I$(LIBUSB_PREFIX)/include \ 41 37 -I$(LIBDRV_PREFIX)/include -
uspace/lib/usb/Makefile
ra29529b r81db65b 29 29 USPACE_PREFIX = ../.. 30 30 LIBRARY = libusb 31 EXTRA_CFLAGS += \ 32 -I$(LIBDRV_PREFIX)/include \ 33 -Iinclude 31 LIBS = $(LIBDRV_PREFIX)/libdrv.a 32 EXTRA_CFLAGS += -I$(LIBDRV_PREFIX)/include -Iinclude 34 33 35 34 SOURCES = \ 35 src/addrkeep.c \ 36 src/altiface.c \ 36 37 src/class.c \ 37 38 src/ddfiface.c \ 38 39 src/debug.c \ 39 src/driver.c \ 40 src/devdrv.c \ 41 src/devpoll.c \ 42 src/dp.c \ 40 43 src/dump.c \ 44 src/hidiface.c \ 45 src/hidpath.c \ 46 src/hidparser.c \ 47 src/hiddescriptor.c \ 41 48 src/host.c \ 42 src/usb.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 43 64 44 65 include $(USPACE_PREFIX)/Makefile.common -
uspace/lib/usb/include/usb/ddfiface.h
ra29529b r81db65b 37 37 38 38 #include <sys/types.h> 39 #include <usb/usbdevice.h> 39 40 #include <usb_iface.h> 40 41 -
uspace/lib/usb/include/usb/descriptor.h
ra29529b r81db65b 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 contain185 * the last two mandatory fields (type and length of the first class-specific186 * descriptor).187 */188 typedef struct {189 /** Total size of this descriptor in bytes.190 *191 * This includes all class-specific descriptor info - type + length192 * 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 211 169 #endif 212 170 /** -
uspace/lib/usb/src/ddfiface.c
ra29529b r81db65b 37 37 #include <async.h> 38 38 #include <usb/ddfiface.h> 39 #include <usb/driver.h>40 39 #include <usb/debug.h> 41 40 #include <errno.h> -
uspace/lib/usb/src/dump.c
ra29529b r81db65b 41 41 #include <usb/descriptor.h> 42 42 #include <usb/classes/classes.h> 43 #include <usb/classes/hid.h> 43 44 44 45 /** Mapping between descriptor id and dumping function. */ -
uspace/lib/usbvirt/Makefile
ra29529b r81db65b 30 30 LIBRARY = libusbvirt 31 31 32 EXTRA_CFLAGS = \ 33 -I$(LIBDRV_PREFIX)/include \ 34 -I$(LIBUSB_PREFIX)/include \ 35 -I$(LIBUSBDEV_PREFIX)/include \ 36 -Iinclude 32 EXTRA_CFLAGS = -I$(LIBUSB_PREFIX)/include -I$(LIBDRV_PREFIX)/include -Iinclude 37 33 38 34 SOURCES = \
Note:
See TracChangeset
for help on using the changeset viewer.