Changes in / [81db65b:a29529b] in mainline


Ignore:
Location:
uspace
Files:
55 added
51 deleted
39 edited

Legend:

Unmodified
Added
Removed
  • uspace/Makefile

    r81db65b ra29529b  
    179179ifeq ($(UARCH),amd64)
    180180        LIBS += lib/usb
     181        LIBS += lib/usbhost
     182        LIBS += lib/usbdev
     183        LIBS += lib/usbhid
    181184        LIBS += lib/usbvirt
    182185endif
     
    184187ifeq ($(UARCH),ia32)
    185188        LIBS += lib/usb
     189        LIBS += lib/usbhost
     190        LIBS += lib/usbdev
     191        LIBS += lib/usbhid
    186192        LIBS += lib/usbvirt
    187193endif
  • uspace/Makefile.common

    r81db65b ra29529b  
    8888
    8989LIBUSB_PREFIX = $(LIB_PREFIX)/usb
     90LIBUSBHOST_PREFIX = $(LIB_PREFIX)/usbhost
     91LIBUSBDEV_PREFIX = $(LIB_PREFIX)/usbdev
     92LIBUSBHID_PREFIX = $(LIB_PREFIX)/usbhid
    9093LIBUSBVIRT_PREFIX = $(LIB_PREFIX)/usbvirt
    9194LIBDRV_PREFIX = $(LIB_PREFIX)/drv
  • uspace/app/lsusb/Makefile

    r81db65b ra29529b  
    3030BINARY = lsusb
    3131
    32 LIBS = $(LIBUSB_PREFIX)/libusb.a $(LIBDRV_PREFIX)/libdrv.a
    33 EXTRA_CFLAGS = -I$(LIBUSB_PREFIX)/include -I$(LIBDRV_PREFIX)/include
     32LIBS = \
     33        $(LIBUSBDEV_PREFIX)/libusbdev.a \
     34        $(LIBUSB_PREFIX)/libusb.a \
     35        $(LIBDRV_PREFIX)/libdrv.a
     36EXTRA_CFLAGS = \
     37        -I$(LIBUSB_PREFIX)/include \
     38        -I$(LIBUSBDEV_PREFIX)/include \
     39        -I$(LIBDRV_PREFIX)/include
    3440
    3541SOURCES = \
  • uspace/app/tester/Makefile

    r81db65b ra29529b  
    3131BINARY = tester
    3232
    33 LIBS += $(LIBUSB_PREFIX)/libusb.a
    34 EXTRA_CFLAGS += -I$(LIBUSB_PREFIX)/include
    35 
    3633SOURCES = \
    3734        tester.c \
    38         adt/usbaddrkeep.c \
    3935        thread/thread1.c \
    4036        print/print1.c \
  • uspace/app/tester/tester.c

    r81db65b ra29529b  
    6464#include "mm/mapping1.def"
    6565#include "hw/serial/serial1.def"
    66 #include "adt/usbaddrkeep.def"
    6766#include "hw/misc/virtchar1.def"
    6867#include "devs/devman1.def"
  • uspace/app/tester/tester.h

    r81db65b ra29529b  
    8080extern const char *test_mapping1(void);
    8181extern const char *test_serial1(void);
    82 extern const char *test_usbaddrkeep(void);
    8382extern const char *test_virtchar1(void);
    8483extern const char *test_devman1(void);
  • uspace/app/usbinfo/Makefile

    r81db65b ra29529b  
    3030BINARY = usbinfo
    3131
    32 LIBS = $(LIBUSB_PREFIX)/libusb.a $(LIBDRV_PREFIX)/libdrv.a
    33 EXTRA_CFLAGS = -I$(LIBUSB_PREFIX)/include -I$(LIBDRV_PREFIX)/include
     32LIBS = \
     33        $(LIBUSBDEV_PREFIX)/libusbdev.a \
     34        $(LIBUSB_PREFIX)/libusb.a \
     35        $(LIBDRV_PREFIX)/libdrv.a
     36EXTRA_CFLAGS = \
     37        -I$(LIBUSB_PREFIX)/include \
     38        -I$(LIBUSBDEV_PREFIX)/include \
     39        -I$(LIBDRV_PREFIX)/include
    3440
    3541SOURCES = \
  • uspace/app/usbinfo/info.c

    r81db65b ra29529b  
    4141#include <usb/request.h>
    4242#include <usb/classes/classes.h>
    43 #include <usb/classes/hid.h>
    4443#include <usb/classes/hub.h>
    4544#include "usbinfo.h"
  • uspace/app/usbinfo/main.c

    r81db65b ra29529b  
    4646#include <usb/pipes.h>
    4747#include <usb/host.h>
     48#include <usb/driver.h>
    4849#include "usbinfo.h"
    4950
  • uspace/app/vuhid/Makefile

    r81db65b ra29529b  
    3434LIBS = \
    3535        $(LIBUSBVIRT_PREFIX)/libusbvirt.a \
     36        $(LIBUSBHID_PREFIX)/libusbhid.a \
     37        $(LIBUSBDEV_PREFIX)/libusbdev.a \
    3638        $(LIBUSB_PREFIX)/libusb.a
    3739EXTRA_CFLAGS = \
    3840        -I$(LIBUSB_PREFIX)/include \
     41        -I$(LIBUSBDEV_PREFIX)/include \
     42        -I$(LIBUSBHID_PREFIX)/include \
    3943        -I$(LIBUSBVIRT_PREFIX)/include \
    4044        -I$(LIBDRV_PREFIX)/include
  • uspace/drv/ehci-hcd/Makefile

    r81db65b ra29529b  
    2828
    2929USPACE_PREFIX = ../..
    30 LIBS = $(LIBDRV_PREFIX)/libdrv.a $(LIBUSB_PREFIX)/libusb.a
    31 EXTRA_CFLAGS += -I$(LIBDRV_PREFIX)/include -I$(LIBUSB_PREFIX)/include -I.
     30
     31LIBS = \
     32        $(LIBUSBHOST_PREFIX)/libusbhost.a \
     33        $(LIBUSB_PREFIX)/libusb.a \
     34        $(LIBDRV_PREFIX)/libdrv.a
     35EXTRA_CFLAGS += \
     36        -I$(LIBUSB_PREFIX)/include \
     37        -I$(LIBUSBHOST_PREFIX)/include \
     38        -I$(LIBDRV_PREFIX)/include
     39
    3240BINARY = ehci-hcd
    3341
  • uspace/drv/ohci/Makefile

    r81db65b ra29529b  
    2828
    2929USPACE_PREFIX = ../..
    30 LIBS = $(LIBDRV_PREFIX)/libdrv.a $(LIBUSB_PREFIX)/libusb.a
    31 EXTRA_CFLAGS += -I$(LIBDRV_PREFIX)/include -I$(LIBUSB_PREFIX)/include -I.
     30
     31LIBS = \
     32        $(LIBUSBHOST_PREFIX)/libusbhost.a \
     33        $(LIBUSBDEV_PREFIX)/libusbdev.a \
     34        $(LIBUSB_PREFIX)/libusb.a \
     35        $(LIBDRV_PREFIX)/libdrv.a
     36EXTRA_CFLAGS += \
     37        -I$(LIBUSB_PREFIX)/include \
     38        -I$(LIBUSBDEV_PREFIX)/include \
     39        -I$(LIBUSBHOST_PREFIX)/include \
     40        -I$(LIBDRV_PREFIX)/include
     41
    3242BINARY = ohci
    3343
  • uspace/drv/ohci/hc.c

    r81db65b ra29529b  
    4040#include <usb/usb.h>
    4141#include <usb/ddfiface.h>
    42 #include <usb/usbdevice.h>
    4342
    4443#include "hc.h"
  • uspace/drv/ohci/hw_struct/endpoint_descriptor.h

    r81db65b ra29529b  
    4040#include <usb/host/endpoint.h>
    4141
    42 #include "utils/malloc32.h"
     42#include "../utils/malloc32.h"
    4343#include "transfer_descriptor.h"
    4444
  • uspace/drv/ohci/hw_struct/transfer_descriptor.c

    r81db65b ra29529b  
    3333 */
    3434#include <usb/usb.h>
    35 #include "utils/malloc32.h"
    36 
    3735#include "transfer_descriptor.h"
    3836
  • uspace/drv/ohci/hw_struct/transfer_descriptor.h

    r81db65b ra29529b  
    3737#include <bool.h>
    3838#include <stdint.h>
    39 #include "utils/malloc32.h"
     39#include "../utils/malloc32.h"
    4040
    4141#include "completion_codes.h"
  • uspace/drv/ohci/root_hub.c

    r81db65b ra29529b  
    4141#include "usb/classes/classes.h"
    4242#include "usb/devdrv.h"
     43#include "ohci_regs.h"
     44
    4345#include <usb/request.h>
    4446#include <usb/classes/hub.h>
     
    109111 */
    110112static 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;
    113115
    114116/**
     
    116118 */
    117119static 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;
    119122
    120123/**
     
    122125 */
    123126static 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);
    126131
    127132/**
     
    129134 */
    130135static 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);
    132138
    133139/**
     
    135141 */
    136142static 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;
    141147
    142148/**
     
    144150 */
    145151static 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
    146164    (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 */
    155174//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
    157176
    158177/**
    159178 * bitmask with port status changes
    160179 */
    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 
     180static 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*/
    168187
    169188static int create_serialized_hub_descriptor(rh_t *instance);
  • uspace/drv/uhci-hcd/Makefile

    r81db65b ra29529b  
    2828
    2929USPACE_PREFIX = ../..
    30 LIBS = $(LIBDRV_PREFIX)/libdrv.a $(LIBUSB_PREFIX)/libusb.a
    31 EXTRA_CFLAGS += -I$(LIBDRV_PREFIX)/include -I$(LIBUSB_PREFIX)/include -I.
     30
     31LIBS = \
     32        $(LIBUSBHOST_PREFIX)/libusbhost.a \
     33        $(LIBUSB_PREFIX)/libusb.a \
     34        $(LIBDRV_PREFIX)/libdrv.a
     35EXTRA_CFLAGS += \
     36        -I$(LIBUSB_PREFIX)/include \
     37        -I$(LIBUSBHOST_PREFIX)/include \
     38        -I$(LIBDRV_PREFIX)/include
     39
    3240BINARY = uhci-hcd
    3341
  • uspace/drv/uhci-hcd/hw_struct/queue_head.h

    r81db65b ra29529b  
    3838#include "link_pointer.h"
    3939#include "transfer_descriptor.h"
    40 #include "utils/malloc32.h"
     40#include "../utils/malloc32.h"
    4141
    4242/** This structure is defined in UHCI design guide p. 31 */
  • uspace/drv/uhci-hcd/hw_struct/transfer_descriptor.c

    r81db65b ra29529b  
    3636
    3737#include "transfer_descriptor.h"
    38 #include "utils/malloc32.h"
     38#include "../utils/malloc32.h"
    3939
    4040/** Initialize Transfer Descriptor
  • uspace/drv/uhci-rhd/Makefile

    r81db65b ra29529b  
    2828
    2929USPACE_PREFIX = ../..
    30 LIBS = $(LIBDRV_PREFIX)/libdrv.a $(LIBUSB_PREFIX)/libusb.a
    31 EXTRA_CFLAGS += -I$(LIBDRV_PREFIX)/include -I$(LIBUSB_PREFIX)/include -I.
     30
     31LIBS = \
     32        $(LIBUSBDEV_PREFIX)/libusbdev.a \
     33        $(LIBUSB_PREFIX)/libusb.a \
     34        $(LIBDRV_PREFIX)/libdrv.a
     35EXTRA_CFLAGS += \
     36        -I$(LIBUSB_PREFIX)/include \
     37        -I$(LIBUSBDEV_PREFIX)/include \
     38        -I$(LIBDRV_PREFIX)/include
     39
    3240BINARY = uhci-rhd
    3341
  • uspace/drv/usbflbk/Makefile

    r81db65b ra29529b  
    2828
    2929USPACE_PREFIX = ../..
    30 LIBS = $(LIBDRV_PREFIX)/libdrv.a $(LIBUSB_PREFIX)/libusb.a
    31 EXTRA_CFLAGS += -I$(LIBDRV_PREFIX)/include -I$(LIBUSB_PREFIX)/include
     30
     31LIBS = \
     32        $(LIBUSBDEV_PREFIX)/libusbdev.a \
     33        $(LIBUSB_PREFIX)/libusb.a \
     34        $(LIBDRV_PREFIX)/libdrv.a
     35EXTRA_CFLAGS += \
     36        -I$(LIBUSB_PREFIX)/include \
     37        -I$(LIBUSBDEV_PREFIX)/include \
     38        -I$(LIBDRV_PREFIX)/include
     39
    3240BINARY = usbflbk
    3341
  • uspace/drv/usbhid/Makefile

    r81db65b ra29529b  
    2828
    2929USPACE_PREFIX = ../..
    30 LIBS = $(LIBDRV_PREFIX)/libdrv.a $(LIBUSB_PREFIX)/libusb.a
    31 EXTRA_CFLAGS += -I$(LIBDRV_PREFIX)/include -I$(LIBUSB_PREFIX)/include -I.
     30
     31LIBS = \
     32        $(LIBUSBHID_PREFIX)/libusbhid.a \
     33        $(LIBUSBDEV_PREFIX)/libusbdev.a \
     34        $(LIBUSB_PREFIX)/libusb.a \
     35        $(LIBDRV_PREFIX)/libdrv.a
     36EXTRA_CFLAGS += \
     37        -I. \
     38        -I$(LIBUSB_PREFIX)/include \
     39        -I$(LIBUSBDEV_PREFIX)/include \
     40        -I$(LIBUSBHID_PREFIX)/include \
     41        -I$(LIBDRV_PREFIX)/include
     42
    3243BINARY = usbhid
    3344
  • uspace/drv/usbhub/Makefile

    r81db65b ra29529b  
    2828
    2929USPACE_PREFIX = ../..
    30 LIBS = $(LIBDRV_PREFIX)/libdrv.a $(LIBUSB_PREFIX)/libusb.a
    31 EXTRA_CFLAGS += -I$(LIBDRV_PREFIX)/include -I$(LIBUSB_PREFIX)/include
     30
     31LIBS = \
     32        $(LIBUSBDEV_PREFIX)/libusbdev.a \
     33        $(LIBUSB_PREFIX)/libusb.a \
     34        $(LIBDRV_PREFIX)/libdrv.a
     35EXTRA_CFLAGS += \
     36        -I$(LIBUSB_PREFIX)/include \
     37        -I$(LIBUSBDEV_PREFIX)/include \
     38        -I$(LIBDRV_PREFIX)/include
     39
    3240BINARY = usbhub
    3341
  • uspace/drv/usbhub/usbhub.c

    r81db65b ra29529b  
    7171
    7272static void usb_hub_process_global_interrupt(usb_hub_info_t * hub_info);
     73
     74static void usb_hub_polling_terminted_callback(usb_device_t * device,
     75    bool was_error, void * data);
    7376
    7477
     
    351354        rc = usb_device_auto_poll(hub_info->usb_device, 0,
    352355            hub_port_changes_callback, ((hub_info->port_count + 1) / 8) + 1,
    353             NULL, hub_info);
     356            usb_hub_polling_terminted_callback, hub_info);
    354357        if (rc != EOK) {
    355358                usb_log_error("Failed to create polling fibril: %s.\n",
     
    489492
    490493/**
     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 */
     501static 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/**
    491513 * @}
    492514 */
  • uspace/drv/usbkbd/Makefile

    r81db65b ra29529b  
    2828
    2929USPACE_PREFIX = ../..
    30 LIBS = $(LIBDRV_PREFIX)/libdrv.a $(LIBUSB_PREFIX)/libusb.a
    31 EXTRA_CFLAGS += -I$(LIBDRV_PREFIX)/include -I$(LIBUSB_PREFIX)/include -I.
     30
     31LIBS = \
     32        $(LIBUSBHID_PREFIX)/libusbhid.a \
     33        $(LIBUSBDEV_PREFIX)/libusbdev.a \
     34        $(LIBUSB_PREFIX)/libusb.a \
     35        $(LIBDRV_PREFIX)/libdrv.a
     36EXTRA_CFLAGS += \
     37        -I. \
     38        -I$(LIBUSB_PREFIX)/include \
     39        -I$(LIBUSBDEV_PREFIX)/include \
     40        -I$(LIBUSBHID_PREFIX)/include \
     41        -I$(LIBDRV_PREFIX)/include
     42
    3243BINARY = usbkbd
    3344
  • uspace/drv/usbmast/Makefile

    r81db65b ra29529b  
    2828
    2929USPACE_PREFIX = ../..
    30 LIBS = $(LIBDRV_PREFIX)/libdrv.a $(LIBUSB_PREFIX)/libusb.a
    31 EXTRA_CFLAGS += -I$(LIBDRV_PREFIX)/include -I$(LIBUSB_PREFIX)/include
     30
     31LIBS = \
     32        $(LIBUSBDEV_PREFIX)/libusbdev.a \
     33        $(LIBUSB_PREFIX)/libusb.a \
     34        $(LIBDRV_PREFIX)/libdrv.a
     35EXTRA_CFLAGS += \
     36        -I$(LIBUSB_PREFIX)/include \
     37        -I$(LIBUSBDEV_PREFIX)/include \
     38        -I$(LIBDRV_PREFIX)/include
     39
    3240BINARY = usbmast
    3341
    3442SOURCES = \
     43        inquiry.c \
    3544        main.c \
    3645        mast.c
  • uspace/drv/usbmast/main.c

    r81db65b ra29529b  
    7575};
    7676
    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 
    13877/** Callback when new device is attached and recognized as a mass storage.
    13978 *
     
    168107            (size_t) dev->pipes[BULK_OUT_EP].descriptor->max_packet_size);
    169108
    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);
    171126
    172127        return EOK;
  • uspace/drv/usbmast/mast.c

    r81db65b ra29529b  
    4040#include <str_error.h>
    4141#include <usb/debug.h>
     42#include <usb/request.h>
    4243
    4344bool usb_mast_verbose = true;
     
    6364 * @return Error code.
    6465 */
    65 int usb_massstor_data_in(usb_pipe_t *bulk_in_pipe, usb_pipe_t *bulk_out_pipe,
     66int usb_massstor_data_in(usb_device_t *dev,
     67    size_t bulk_in_pipe_index, size_t bulk_out_pipe_index,
    6668    uint32_t tag, uint8_t lun, void *cmd, size_t cmd_size,
    6769    void *in_buffer, size_t in_buffer_size, size_t *received_size)
     
    6971        int rc;
    7072        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;
    7175
    7276        /* Prepare CBW - command block wrapper */
     
    135139}
    136140
     141/** Perform bulk-only mass storage reset.
     142 *
     143 * @param dev Device to be reseted.
     144 * @return Error code.
     145 */
     146int 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 */
     162void 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 */
     184int 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 */
     208size_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
    137220/**
    138221 * @}
  • uspace/drv/usbmast/mast.h

    r81db65b ra29529b  
    4040#include <usb/usb.h>
    4141#include <usb/pipes.h>
     42#include <usb/devdrv.h>
    4243
    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 */
     48typedef 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
     59int 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 *);
     61int usb_massstor_reset(usb_device_t *);
     62void usb_massstor_reset_recovery(usb_device_t *, size_t, size_t);
     63int usb_massstor_get_max_lun(usb_device_t *);
     64size_t usb_masstor_get_lun_count(usb_device_t *);
     65int usb_massstor_inquiry(usb_device_t *, size_t, size_t,
     66    usb_massstor_inquiry_result_t *);
     67const char *usb_str_masstor_scsi_peripheral_device_type(int);
    4568
    4669#endif
  • uspace/drv/usbmid/Makefile

    r81db65b ra29529b  
    2828
    2929USPACE_PREFIX = ../..
    30 LIBS = $(LIBDRV_PREFIX)/libdrv.a $(LIBUSB_PREFIX)/libusb.a
    31 EXTRA_CFLAGS += -I$(LIBDRV_PREFIX)/include -I$(LIBUSB_PREFIX)/include
     30
     31LIBS = \
     32        $(LIBUSBDEV_PREFIX)/libusbdev.a \
     33        $(LIBUSB_PREFIX)/libusb.a \
     34        $(LIBDRV_PREFIX)/libdrv.a
     35EXTRA_CFLAGS += \
     36        -I$(LIBUSB_PREFIX)/include \
     37        -I$(LIBUSBDEV_PREFIX)/include \
     38        -I$(LIBDRV_PREFIX)/include
     39       
    3240BINARY = usbmid
    3341
  • uspace/drv/usbmouse/Makefile

    r81db65b ra29529b  
    2828
    2929USPACE_PREFIX = ../..
    30 LIBS = $(LIBDRV_PREFIX)/libdrv.a $(LIBUSB_PREFIX)/libusb.a
    31 EXTRA_CFLAGS += -I$(LIBDRV_PREFIX)/include -I$(LIBUSB_PREFIX)/include -I.
     30
     31LIBS = \
     32        $(LIBUSBHID_PREFIX)/libusbhid.a \
     33        $(LIBUSBDEV_PREFIX)/libusbdev.a \
     34        $(LIBUSB_PREFIX)/libusb.a \
     35        $(LIBDRV_PREFIX)/libdrv.a
     36EXTRA_CFLAGS += \
     37        -I$(LIBUSB_PREFIX)/include \
     38        -I$(LIBUSBDEV_PREFIX)/include \
     39        -I$(LIBUSBHID_PREFIX)/include \
     40        -I$(LIBDRV_PREFIX)/include
    3241
    3342BINARY = usbmouse
  • uspace/drv/vhc/Makefile

    r81db65b ra29529b  
    2929USPACE_PREFIX = ../..
    3030LIBS = \
     31        $(LIBUSBDEV_PREFIX)/libusbdev.a \
     32        $(LIBUSBHOST_PREFIX)/libusbhost.a \
    3133        $(LIBUSB_PREFIX)/libusb.a \
    3234        $(LIBUSBVIRT_PREFIX)/libusbvirt.a \
     
    3436EXTRA_CFLAGS += \
    3537        -I$(LIBUSBVIRT_PREFIX)/include \
     38        -I$(LIBUSBDEV_PREFIX)/include \
     39        -I$(LIBUSBHOST_PREFIX)/include \
    3640        -I$(LIBUSB_PREFIX)/include \
    3741        -I$(LIBDRV_PREFIX)/include
  • uspace/lib/usb/Makefile

    r81db65b ra29529b  
    2929USPACE_PREFIX = ../..
    3030LIBRARY = libusb
    31 LIBS = $(LIBDRV_PREFIX)/libdrv.a
    32 EXTRA_CFLAGS += -I$(LIBDRV_PREFIX)/include -Iinclude
     31EXTRA_CFLAGS += \
     32        -I$(LIBDRV_PREFIX)/include \
     33        -Iinclude
    3334
    3435SOURCES = \
    35         src/addrkeep.c \
    36         src/altiface.c \
    3736        src/class.c \
    3837        src/ddfiface.c \
    3938        src/debug.c \
    40         src/devdrv.c \
    41         src/devpoll.c \
    42         src/dp.c \
     39        src/driver.c \
    4340        src/dump.c \
    44         src/hidiface.c \
    45         src/hidpath.c \
    46         src/hidparser.c \
    47         src/hiddescriptor.c \
    4841        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
    6443
    6544include $(USPACE_PREFIX)/Makefile.common
  • uspace/lib/usb/include/usb/ddfiface.h

    r81db65b ra29529b  
    3737
    3838#include <sys/types.h>
    39 #include <usb/usbdevice.h>
    4039#include <usb_iface.h>
    4140
  • uspace/lib/usb/include/usb/descriptor.h

    r81db65b ra29529b  
    167167} __attribute__ ((packed)) usb_standard_endpoint_descriptor_t;
    168168
     169/** Part of standard USB HID descriptor specifying one class descriptor.
     170 *
     171 * (See HID Specification, p.22)
     172 */
     173typedef 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 */
     188typedef 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
    169211#endif
    170212/**
  • uspace/lib/usb/src/ddfiface.c

    r81db65b ra29529b  
    3737#include <async.h>
    3838#include <usb/ddfiface.h>
     39#include <usb/driver.h>
    3940#include <usb/debug.h>
    4041#include <errno.h>
  • uspace/lib/usb/src/dump.c

    r81db65b ra29529b  
    4141#include <usb/descriptor.h>
    4242#include <usb/classes/classes.h>
    43 #include <usb/classes/hid.h>
    4443
    4544/** Mapping between descriptor id and dumping function. */
  • uspace/lib/usbvirt/Makefile

    r81db65b ra29529b  
    3030LIBRARY = libusbvirt
    3131
    32 EXTRA_CFLAGS = -I$(LIBUSB_PREFIX)/include -I$(LIBDRV_PREFIX)/include -Iinclude
     32EXTRA_CFLAGS = \
     33        -I$(LIBDRV_PREFIX)/include \
     34        -I$(LIBUSB_PREFIX)/include \
     35        -I$(LIBUSBDEV_PREFIX)/include \
     36        -Iinclude
    3337
    3438SOURCES = \
Note: See TracChangeset for help on using the changeset viewer.