Changeset 26e7d6d in mainline for uspace/drv/bus/usb/usbmast


Ignore:
Timestamp:
2011-09-19T16:31:00Z (14 years ago)
Author:
Vojtech Horky <vojtechhorky@…>
Branches:
lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
Children:
a347a11
Parents:
3842a955 (diff), 086290d (diff)
Note: this is a merge changeset, the changes displayed below correspond to the merge itself.
Use the (diff) links above to see all the changes relative to each parent.
Message:

Merge mainline changes

Location:
uspace/drv/bus/usb/usbmast
Files:
5 added
6 moved

Legend:

Unmodified
Added
Removed
  • uspace/drv/bus/usb/usbmast/Makefile

    r3842a955 r26e7d6d  
    2727#
    2828
    29 USPACE_PREFIX = ../..
     29USPACE_PREFIX = ../../../..
    3030
    3131LIBS = \
    3232        $(LIBUSBDEV_PREFIX)/libusbdev.a \
    3333        $(LIBUSB_PREFIX)/libusb.a \
    34         $(LIBDRV_PREFIX)/libdrv.a
     34        $(LIBDRV_PREFIX)/libdrv.a \
     35        $(LIBSCSI_PREFIX)/libscsi.a
     36
    3537EXTRA_CFLAGS += \
    3638        -I$(LIBUSB_PREFIX)/include \
    3739        -I$(LIBUSBDEV_PREFIX)/include \
    38         -I$(LIBDRV_PREFIX)/include
     40        -I$(LIBDRV_PREFIX)/include \
     41        -I$(LIBSCSI_PREFIX)/include
    3942
    4043BINARY = usbmast
    4144
    4245SOURCES = \
    43         inquiry.c \
     46        bo_trans.c \
     47        cmdw.c \
    4448        main.c \
    45         mast.c
     49        scsi_ms.c
    4650
    4751include $(USPACE_PREFIX)/Makefile.common
  • uspace/drv/bus/usb/usbmast/cmdw.c

    r3842a955 r26e7d6d  
    3434 */
    3535
    36 #ifndef USB_USBMAST_CMDS_H_
    37 #define USB_USBMAST_CMDS_H_
    38 
     36#include <byteorder.h>
     37#include <mem.h>
    3938#include <sys/types.h>
    4039#include <usb/usb.h>
     40#include "cmdw.h"
    4141
    42 typedef struct {
    43         uint32_t dCBWSignature;
    44         uint32_t dCBWTag;
    45         uint32_t dCBWDataTransferLength;
    46         uint8_t bmCBWFlags;
    47         uint8_t bCBWLUN;
    48         uint8_t bCBWBLength;
    49         uint8_t CBWCB[16];
    50 } __attribute__((packed)) usb_massstor_cbw_t;
    51 
    52 typedef struct {
    53         uint32_t dCSWSignature;
    54         uint32_t dCSWTag;
    55         uint32_t dCSWDataResidue;
    56         uint8_t dCSWStatus;
    57 } __attribute__((packed)) usb_massstor_csw_t;
    58 
    59 static inline void usb_massstor_cbw_prepare(usb_massstor_cbw_t *cbw,
     42void usb_massstor_cbw_prepare(usb_massstor_cbw_t *cbw,
    6043    uint32_t tag, uint32_t transfer_length, usb_direction_t dir,
    61     uint8_t lun, uint8_t cmd_len, uint8_t *cmd)
     44    uint8_t lun, uint8_t cmd_len, const uint8_t *cmd)
    6245{
    6346        cbw->dCBWSignature = uint32_host2usb(0x43425355);
     
    7962}
    8063
    81 #endif
    82 
    8364/**
    8465 * @}
  • uspace/drv/bus/usb/usbmast/scsi_ms.h

    r3842a955 r26e7d6d  
    3131 */
    3232/** @file
    33  * Generic functions for USB mass storage.
     33 * SCSI functions for USB mass storage.
    3434 */
    3535
    36 #ifndef USB_USBMAST_MAST_H_
    37 #define USB_USBMAST_MAST_H_
     36#ifndef USB_USBMAST_SCSI_MS_H_
     37#define USB_USBMAST_SCSI_MS_H_
    3838
     39#include <scsi/spc.h>
    3940#include <sys/types.h>
    4041#include <usb/usb.h>
    41 #include <usb/dev/pipes.h>
    4242#include <usb/dev/driver.h>
    4343
    44 /** Result of SCSI INQUIRY command.
     44/** Result of SCSI Inquiry command.
    4545 * This is already parsed structure, not the original buffer returned by
    4646 * the device.
    4747 */
    4848typedef struct {
    49         /** SCSI peripheral device type. */
    50         int peripheral_device_type;
    51         /** Whether the device is removable. */
     49        /** SCSI peripheral device type */
     50        unsigned device_type;
     51        /** Whether the device is removable */
    5252        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;
     53        /** Vendor ID string */
     54        char vendor[SCSI_INQ_VENDOR_STR_BUFSIZE];
     55        /** Product ID string */
     56        char product[SCSI_INQ_PRODUCT_STR_BUFSIZE];
     57        /** Revision string */
     58        char revision[SCSI_INQ_REVISION_STR_BUFSIZE];
     59} usbmast_inquiry_data_t;
    5860
    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);
     61extern int usbmast_inquiry(usbmast_fun_t *, usbmast_inquiry_data_t *);
     62extern int usbmast_request_sense(usbmast_fun_t *, void *, size_t);
     63extern int usbmast_read_capacity(usbmast_fun_t *, uint32_t *, uint32_t *);
     64extern int usbmast_read(usbmast_fun_t *, uint64_t, size_t, void *);
     65extern int usbmast_write(usbmast_fun_t *, uint64_t, size_t, const void *);
     66extern const char *usbmast_scsi_dev_type_str(unsigned);
    6867
    6968#endif
  • uspace/drv/bus/usb/usbmast/usbmast.h

    r3842a955 r26e7d6d  
    11/*
    2  * Copyright (c) 2006 Josef Cejka
     2 * Copyright (c) 2011 Jiri Svoboda
    33 * All rights reserved.
    44 *
     
    2727 */
    2828
    29 /** @addtogroup kbdgen
    30  * @brief HelenOS generic uspace keyboard handler.
    31  * @ingroup kbd
     29/** @addtogroup drvusbmast
    3230 * @{
    3331 */
    3432/** @file
     33 * USB mass storage commands.
    3534 */
    3635
    37 #ifndef __KEYBUFFER_H__
    38 #define __KEYBUFFER_H__
     36#ifndef USBMAST_H_
     37#define USBMAST_H_
    3938
    4039#include <sys/types.h>
    41 #include <io/console.h>
    42 #include <bool.h>
     40#include <usb/usb.h>
    4341
    44 /** Size of buffer for pressed keys */
    45 #define KEYBUFFER_SIZE  128
     42/** Mass storage device. */
     43typedef struct {
     44        /** DDF device */
     45        ddf_dev_t *ddf_dev;
     46        /** USB device */
     47        usb_device_t *usb_dev;
     48        /** Number of LUNs */
     49        unsigned luns;
     50} usbmast_dev_t;
    4651
     52/** Mass storage function.
     53 *
     54 * Serves as soft state for function/LUN.
     55 */
    4756typedef struct {
    48         kbd_event_t fifo[KEYBUFFER_SIZE];
    49         size_t head;
    50         size_t tail;
    51         size_t items;
    52 } keybuffer_t;
    53 
    54 extern void keybuffer_free(keybuffer_t *);
    55 extern void keybuffer_init(keybuffer_t *);
    56 extern size_t keybuffer_available(keybuffer_t *);
    57 extern bool keybuffer_empty(keybuffer_t *);
    58 extern void keybuffer_push(keybuffer_t *, const kbd_event_t *);
    59 extern bool keybuffer_pop(keybuffer_t *, kbd_event_t *);
     57        /** Mass storage device the function belongs to */
     58        usbmast_dev_t *mdev;
     59        /** DDF function */
     60        ddf_fun_t *ddf_fun;
     61        /** LUN */
     62        unsigned lun;
     63        /** Total number of blocks */
     64        uint64_t nblocks;
     65        /** Block size in bytes */
     66        size_t block_size;
     67} usbmast_fun_t;
    6068
    6169#endif
Note: See TracChangeset for help on using the changeset viewer.