Changeset 26e7d6d in mainline for uspace/drv/bus/usb/usbmast
- Timestamp:
- 2011-09-19T16:31:00Z (14 years ago)
- 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. - Location:
- uspace/drv/bus/usb/usbmast
- Files:
-
- 5 added
- 6 moved
-
Makefile (moved) (moved from uspace/drv/usbmast/Makefile ) (1 diff)
-
bo_trans.c (added)
-
bo_trans.h (added)
-
cmdw.c (moved) (moved from uspace/drv/usbmast/cmds.h ) (2 diffs)
-
cmdw.h (added)
-
main.c (added)
-
scsi.h (moved) (moved from uspace/drv/usbmast/scsi.h )
-
scsi_ms.c (added)
-
scsi_ms.h (moved) (moved from uspace/drv/usbmast/mast.h ) (1 diff)
-
usbmast.h (moved) (moved from uspace/srv/hid/console/keybuffer.h ) (2 diffs)
-
usbmast.ma (moved) (moved from uspace/drv/usbmast/usbmast.ma )
Legend:
- Unmodified
- Added
- Removed
-
uspace/drv/bus/usb/usbmast/Makefile
r3842a955 r26e7d6d 27 27 # 28 28 29 USPACE_PREFIX = ../.. 29 USPACE_PREFIX = ../../../.. 30 30 31 31 LIBS = \ 32 32 $(LIBUSBDEV_PREFIX)/libusbdev.a \ 33 33 $(LIBUSB_PREFIX)/libusb.a \ 34 $(LIBDRV_PREFIX)/libdrv.a 34 $(LIBDRV_PREFIX)/libdrv.a \ 35 $(LIBSCSI_PREFIX)/libscsi.a 36 35 37 EXTRA_CFLAGS += \ 36 38 -I$(LIBUSB_PREFIX)/include \ 37 39 -I$(LIBUSBDEV_PREFIX)/include \ 38 -I$(LIBDRV_PREFIX)/include 40 -I$(LIBDRV_PREFIX)/include \ 41 -I$(LIBSCSI_PREFIX)/include 39 42 40 43 BINARY = usbmast 41 44 42 45 SOURCES = \ 43 inquiry.c \ 46 bo_trans.c \ 47 cmdw.c \ 44 48 main.c \ 45 mast.c49 scsi_ms.c 46 50 47 51 include $(USPACE_PREFIX)/Makefile.common -
uspace/drv/bus/usb/usbmast/cmdw.c
r3842a955 r26e7d6d 34 34 */ 35 35 36 #ifndef USB_USBMAST_CMDS_H_ 37 #define USB_USBMAST_CMDS_H_ 38 36 #include <byteorder.h> 37 #include <mem.h> 39 38 #include <sys/types.h> 40 39 #include <usb/usb.h> 40 #include "cmdw.h" 41 41 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, 42 void usb_massstor_cbw_prepare(usb_massstor_cbw_t *cbw, 60 43 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) 62 45 { 63 46 cbw->dCBWSignature = uint32_host2usb(0x43425355); … … 79 62 } 80 63 81 #endif82 83 64 /** 84 65 * @} -
uspace/drv/bus/usb/usbmast/scsi_ms.h
r3842a955 r26e7d6d 31 31 */ 32 32 /** @file 33 * Genericfunctions for USB mass storage.33 * SCSI functions for USB mass storage. 34 34 */ 35 35 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_ 38 38 39 #include <scsi/spc.h> 39 40 #include <sys/types.h> 40 41 #include <usb/usb.h> 41 #include <usb/dev/pipes.h>42 42 #include <usb/dev/driver.h> 43 43 44 /** Result of SCSI I NQUIRYcommand.44 /** Result of SCSI Inquiry command. 45 45 * This is already parsed structure, not the original buffer returned by 46 46 * the device. 47 47 */ 48 48 typedef 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 */ 52 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; 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; 58 60 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); 61 extern int usbmast_inquiry(usbmast_fun_t *, usbmast_inquiry_data_t *); 62 extern int usbmast_request_sense(usbmast_fun_t *, void *, size_t); 63 extern int usbmast_read_capacity(usbmast_fun_t *, uint32_t *, uint32_t *); 64 extern int usbmast_read(usbmast_fun_t *, uint64_t, size_t, void *); 65 extern int usbmast_write(usbmast_fun_t *, uint64_t, size_t, const void *); 66 extern const char *usbmast_scsi_dev_type_str(unsigned); 68 67 69 68 #endif -
uspace/drv/bus/usb/usbmast/usbmast.h
r3842a955 r26e7d6d 1 1 /* 2 * Copyright (c) 20 06 Josef Cejka2 * Copyright (c) 2011 Jiri Svoboda 3 3 * All rights reserved. 4 4 * … … 27 27 */ 28 28 29 /** @addtogroup kbdgen 30 * @brief HelenOS generic uspace keyboard handler. 31 * @ingroup kbd 29 /** @addtogroup drvusbmast 32 30 * @{ 33 31 */ 34 32 /** @file 33 * USB mass storage commands. 35 34 */ 36 35 37 #ifndef __KEYBUFFER_H__38 #define __KEYBUFFER_H__36 #ifndef USBMAST_H_ 37 #define USBMAST_H_ 39 38 40 39 #include <sys/types.h> 41 #include <io/console.h> 42 #include <bool.h> 40 #include <usb/usb.h> 43 41 44 /** Size of buffer for pressed keys */ 45 #define KEYBUFFER_SIZE 128 42 /** Mass storage device. */ 43 typedef 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; 46 51 52 /** Mass storage function. 53 * 54 * Serves as soft state for function/LUN. 55 */ 47 56 typedef 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; 60 68 61 69 #endif
Note:
See TracChangeset
for help on using the changeset viewer.
