NetBurner 3.5.7
PDF Version
usb_host_msd.h
1/*
2 * Copyright (c) 2015, Freescale Semiconductor, Inc.
3 * Copyright 2016 NXP
4 * All rights reserved.
5 *
6 * SPDX-License-Identifier: BSD-3-Clause
7 */
8
9#ifndef _USB_HOST_MSD_H_
10#define _USB_HOST_MSD_H_
11
12/*******************************************************************************
13 * MSD class private structure, enumeration, macro
14 ******************************************************************************/
15
16/*******************************************************************************
17 * Definitions
18 ******************************************************************************/
19
20/* CBW and CSW Macros */
21#define USB_HOST_MSD_CBW_FLAGS_DIRECTION_OUT (0x00U)
22#define USB_HOST_MSD_CBW_FLAGS_DIRECTION_IN (0x80U)
23#define USB_HOST_MSD_CBW_SIGNATURE (0x43425355U)
24#define USB_HOST_MSD_CSW_SIGNATURE (0x53425355U)
25
26/* UFI data bit macro */
27#define USB_HOST_UFI_BLOCK_DATA_VALID_LENGTH (10U)
28#define USB_HOST_UFI_LOGICAL_UNIT_POSITION (5U)
29#define USB_HOST_UFI_CBW_LENGTH (31U)
30#define USB_HOST_UFI_CSW_LENGTH (13U)
31#define USB_HOST_UFI_MODE_SENSE_PAGE_CONTROL_SHIFT (6U)
32#define USB_HOST_UFI_MODE_SENSE_PAGE_CODE_SHIFT (0U)
33#define USB_HOST_UFI_START_STOP_UNIT_LOEJ_SHIFT (1U)
34#define USB_HOST_UFI_START_STOP_UNIT_START_SHIFT (0U)
35#define USB_HOST_UFI_SEND_DIAGNOSTIC_SELF_TEST_SHIFT (2U)
36
37/*******************************************************************************
38 * MSD class public structure, enumeration, macro, function
39 ******************************************************************************/
46#define USB_HOST_MSD_RETRY_MAX_TIME (1U)
48#define USB_HOST_MSD_BLOCK_SIZE (512U)
49
51#define USB_HOST_MSD_CLASS_CODE (8U)
53#define USB_HOST_MSD_SUBCLASS_CODE_UFI (4U)
55#define USB_HOST_MSD_SUBCLASS_CODE_SCSI (6U)
57#define USB_HOST_MSD_PROTOCOL_BULK (0x50U)
58
60#define USB_HOST_HID_MASS_STORAGE_RESET (0xFFU)
62#define USB_HOST_HID_GET_MAX_LUN (0xFEU)
63
66{
67 kMSD_CommandIdle = 0,
68 kMSD_CommandTransferCBW,
69 kMSD_CommandTransferData,
70 kMSD_CommandTransferCSW,
71 kMSD_CommandDone,
72 kMSD_CommandCancel,
73 kMSD_CommandErrorDone,
75
77typedef struct _usb_host_cbw
78{
79 uint32_t CBWSignature;
81 uint32_t CBWTag;
85 uint8_t CBWFlags;
93 uint8_t CBWLun;
94 uint8_t CBWCBLength;
96 uint8_t CBWCB[16];
98
100typedef struct _usb_host_csw
101{
102 uint32_t CSWSignature;
104 uint32_t CSWTag;
105 uint32_t CSWDataResidue;
107 uint8_t CSWStatus;
115
128
148
164
178
185
186#ifdef __cplusplus
187extern "C" {
188#endif
189
190/*******************************************************************************
191 * API
192 ******************************************************************************/
193
211
233 usb_host_interface_handle interfaceHandle,
234 uint8_t alternateSetting,
235 transfer_callback_t callbackFn,
236 void *callbackParam);
237
249
265 transfer_callback_t callbackFn,
266 void *callbackParam);
267
287 uint8_t *logicalUnitNumber,
288 transfer_callback_t callbackFn,
289 void *callbackParam);
290
315 uint8_t logicalUnit,
316 uint32_t blockAddress,
317 uint8_t *buffer,
318 uint32_t bufferLength,
319 uint32_t blockNumber,
320 transfer_callback_t callbackFn,
321 void *callbackParam);
322
347 uint8_t logicalUnit,
348 uint32_t blockAddress,
349 uint8_t *buffer,
350 uint32_t bufferLength,
351 uint32_t blockNumber,
352 transfer_callback_t callbackFn,
353 void *callbackParam);
354
379 uint8_t logicalUnit,
380 uint32_t blockAddress,
381 uint8_t *buffer,
382 uint32_t bufferLength,
383 uint32_t blockNumber,
384 transfer_callback_t callbackFn,
385 void *callbackParam);
386
411 uint8_t logicalUnit,
412 uint32_t blockAddress,
413 uint8_t *buffer,
414 uint32_t bufferLength,
415 uint32_t blockNumber,
416 transfer_callback_t callbackFn,
417 void *callbackParam);
418
441 uint8_t logicalUnit,
442 uint8_t *buffer,
443 uint32_t bufferLength,
444 transfer_callback_t callbackFn,
445 void *callbackParam);
446
467 uint8_t logicalUnit,
468 transfer_callback_t callbackFn,
469 void *callbackParam);
470
493 uint8_t logicalUnit,
494 uint8_t *buffer,
495 uint32_t bufferLength,
496 transfer_callback_t callbackFn,
497 void *callbackParam);
498
521 uint8_t logicalUnit,
522 uint8_t *buffer,
523 uint32_t bufferLength,
524 transfer_callback_t callbackFn,
525 void *callbackParam);
526
551 uint8_t logicalUnit,
552 uint8_t pageControl,
553 uint8_t pageCode,
554 uint8_t *buffer,
555 uint32_t bufferLength,
556 transfer_callback_t callbackFn,
557 void *callbackParam);
558
581 uint8_t logicalUnit,
582 uint8_t *buffer,
583 uint32_t bufferLength,
584 transfer_callback_t callbackFn,
585 void *callbackParam);
586
609 uint8_t logicalUnit,
610 uint8_t *buffer,
611 uint32_t bufferLength,
612 transfer_callback_t callbackFn,
613 void *callbackParam);
614
639 uint8_t logicalUnit,
640 uint8_t trackNumber,
641 uint16_t interLeave,
642 uint8_t *buffer,
643 uint32_t bufferLength,
644 transfer_callback_t callbackFn,
645 void *callbackParam);
646
670 uint8_t logicalUnit,
671 uint8_t prevent,
672 transfer_callback_t callbackFn,
673 void *callbackParam);
674
699 uint8_t logicalUnit,
700 uint32_t blockAddress,
701 uint8_t *buffer,
702 uint32_t bufferLength,
703 uint32_t blockNumber,
704 transfer_callback_t callbackFn,
705 void *callbackParam);
706
732 uint8_t logicalUnit,
733 uint8_t loadEject,
734 uint8_t start,
735 transfer_callback_t callbackFn,
736 void *callbackParam);
737
760 uint8_t logicalUnit,
761 uint32_t blockAddress,
762 uint16_t verificationLength,
763 transfer_callback_t callbackFn,
764 void *callbackParam);
765
786 uint8_t logicalUnit,
787 transfer_callback_t callbackFn,
788 void *callbackParam);
789
811 uint8_t logicalUnit,
812 uint32_t blockAddress,
813 transfer_callback_t callbackFn,
814 void *callbackParam);
815
837 uint8_t logicalUnit,
838 uint8_t selfTest,
839 transfer_callback_t callbackFn,
840 void *callbackParam);
841
858 uint8_t *buffer,
859 uint32_t bufferLength,
860 transfer_callback_t callbackFn,
861 void *callbackParam,
862 uint8_t direction,
863 uint8_t byteValues[10]);
864
867#ifdef __cplusplus
868}
869#endif
870
873#endif /* _USB_HOST_MSD_H_ */
enum _usb_status usb_status_t
USB error code.
void * usb_host_handle
USB host handle type define.
Definition nxp_usb.h:70
void * usb_device_handle
USB device handle type define.
Definition nxp_usb.h:73
void * usb_host_pipe_handle
USB host pipe handle type define.
Definition usb_host.h:40
void(* transfer_callback_t)(void *param, uint8_t *data, uint32_t dataLen, usb_status_t status)
Transfer callback function typedef.
Definition usb_host.h:178
void * usb_host_class_handle
USB host class handle type define.
Definition usb_host.h:28
void * usb_host_interface_handle
USB host interface handle type define.
Definition usb_host.h:37
usb_status_t USB_HostMsdInit(usb_device_handle deviceHandle, usb_host_class_handle *classHandle)
Initializes the MSD instance.
usb_status_t USB_HostMsdSeek10(usb_host_class_handle classHandle, uint8_t logicalUnit, uint32_t blockAddress, transfer_callback_t callbackFn, void *callbackParam)
Mass storage seek(10).
usb_status_t USB_HostMsdMassStorageReset(usb_host_class_handle classHandle, transfer_callback_t callbackFn, void *callbackParam)
Mass storage reset.
_usb_host_msd_command_status
UFI command process status.
Definition usb_host_msd.h:66
usb_status_t USB_HostMsdGetMaxLun(usb_host_class_handle classHandle, uint8_t *logicalUnitNumber, transfer_callback_t callbackFn, void *callbackParam)
Gets the maximum logical unit number.
usb_status_t USB_HostMsdWrite12(usb_host_class_handle classHandle, uint8_t logicalUnit, uint32_t blockAddress, uint8_t *buffer, uint32_t bufferLength, uint32_t blockNumber, transfer_callback_t callbackFn, void *callbackParam)
Mass storage write (12).
struct _usb_host_msd_command usb_host_msd_command_t
MSC UFI command information structure.
usb_status_t USB_HostMsdReadFormatCapacities(usb_host_class_handle classHandle, uint8_t logicalUnit, uint8_t *buffer, uint32_t bufferLength, transfer_callback_t callbackFn, void *callbackParam)
Mass storage read format capacities.
usb_status_t USB_HostMsdWrite10(usb_host_class_handle classHandle, uint8_t logicalUnit, uint32_t blockAddress, uint8_t *buffer, uint32_t bufferLength, uint32_t blockNumber, transfer_callback_t callbackFn, void *callbackParam)
Mass storage write (10).
usb_status_t USB_HostMsdSendDiagnostic(usb_host_class_handle classHandle, uint8_t logicalUnit, uint8_t selfTest, transfer_callback_t callbackFn, void *callbackParam)
Mass storage send diagnostic.
usb_status_t USB_HostMsdDeinit(usb_device_handle deviceHandle, usb_host_class_handle classHandle)
Deinitializes the MSD instance.
struct _usb_host_ufi_inquiry_data usb_host_ufi_inquiry_data_t
UFI standard inquiry data structure.
struct _usb_host_msd_instance usb_host_msd_instance_t
MSD instance structure, MSD usb_host_class_handle pointer to this structure.
usb_status_t USB_HostMsdFormatUnit(usb_host_class_handle classHandle, uint8_t logicalUnit, uint8_t trackNumber, uint16_t interLeave, uint8_t *buffer, uint32_t bufferLength, transfer_callback_t callbackFn, void *callbackParam)
Mass storage format unit.
usb_status_t USB_HostMsdRead12(usb_host_class_handle classHandle, uint8_t logicalUnit, uint32_t blockAddress, uint8_t *buffer, uint32_t bufferLength, uint32_t blockNumber, transfer_callback_t callbackFn, void *callbackParam)
Mass storage read (12).
usb_status_t USB_HostMsdInquiry(usb_host_class_handle classHandle, uint8_t logicalUnit, uint8_t *buffer, uint32_t bufferLength, transfer_callback_t callbackFn, void *callbackParam)
Mass storage inquiry.
usb_status_t USB_HostMsdTestUnitReady(usb_host_class_handle classHandle, uint8_t logicalUnit, transfer_callback_t callbackFn, void *callbackParam)
Mass storage test unit ready.
usb_status_t USB_HostMsdCommand(usb_host_class_handle classHandle, uint8_t *buffer, uint32_t bufferLength, transfer_callback_t callbackFn, void *callbackParam, uint8_t direction, uint8_t byteValues[10])
all ufi function calls this api.
struct _usb_host_csw usb_host_csw_t
MSC Bulk-Only command status wrapper (CSW)
usb_status_t USB_HostMsdPreventAllowRemoval(usb_host_class_handle classHandle, uint8_t logicalUnit, uint8_t prevent, transfer_callback_t callbackFn, void *callbackParam)
Mass storage prevents/allows a medium removal.
struct _usb_host_cbw usb_host_cbw_t
MSC Bulk-Only command block wrapper (CBW)
usb_status_t USB_HostMsdRezeroUnit(usb_host_class_handle classHandle, uint8_t logicalUnit, transfer_callback_t callbackFn, void *callbackParam)
Mass storage rezero.
usb_status_t USB_HostMsdVerify(usb_host_class_handle classHandle, uint8_t logicalUnit, uint32_t blockAddress, uint16_t verificationLength, transfer_callback_t callbackFn, void *callbackParam)
Mass storage verify.
usb_status_t USB_HostMsdReadCapacity(usb_host_class_handle classHandle, uint8_t logicalUnit, uint8_t *buffer, uint32_t bufferLength, transfer_callback_t callbackFn, void *callbackParam)
Mass storage read capacity.
usb_status_t USB_HostMsdStartStopUnit(usb_host_class_handle classHandle, uint8_t logicalUnit, uint8_t loadEject, uint8_t start, transfer_callback_t callbackFn, void *callbackParam)
Mass storage start stop unit.
usb_status_t USB_HostMsdModeSense(usb_host_class_handle classHandle, uint8_t logicalUnit, uint8_t pageControl, uint8_t pageCode, uint8_t *buffer, uint32_t bufferLength, transfer_callback_t callbackFn, void *callbackParam)
Mass storage mode sense.
struct _usb_host_ufi_sense_data usb_host_ufi_sense_data_t
UFI standard sense data structure.
usb_status_t USB_HostMsdSetInterface(usb_host_class_handle classHandle, usb_host_interface_handle interfaceHandle, uint8_t alternateSetting, transfer_callback_t callbackFn, void *callbackParam)
Sets the interface.
usb_status_t USB_HostMsdRequestSense(usb_host_class_handle classHandle, uint8_t logicalUnit, uint8_t *buffer, uint32_t bufferLength, transfer_callback_t callbackFn, void *callbackParam)
mass storage request sense.
usb_status_t USB_HostMsdModeSelect(usb_host_class_handle classHandle, uint8_t logicalUnit, uint8_t *buffer, uint32_t bufferLength, transfer_callback_t callbackFn, void *callbackParam)
Mass storage mode select.
enum _usb_host_msd_command_status usb_host_msd_command_status_t
UFI command process status.
usb_status_t USB_HostMsdRead10(usb_host_class_handle classHandle, uint8_t logicalUnit, uint32_t blockAddress, uint8_t *buffer, uint32_t bufferLength, uint32_t blockNumber, transfer_callback_t callbackFn, void *callbackParam)
Mass storage read (10).
usb_status_t USB_HostMsdWriteAndVerify(usb_host_class_handle classHandle, uint8_t logicalUnit, uint32_t blockAddress, uint8_t *buffer, uint32_t bufferLength, uint32_t blockNumber, transfer_callback_t callbackFn, void *callbackParam)
Mass storage write and verify.
struct _usb_host_ufi_read_capacity usb_host_ufi_read_capacity_t
UFI read capacity data structure.
MSC Bulk-Only command block wrapper (CBW)
Definition usb_host_msd.h:78
uint8_t CBWFlags
Definition usb_host_msd.h:85
uint8_t CBWLun
Definition usb_host_msd.h:93
uint8_t CBWCB[16]
Definition usb_host_msd.h:96
uint32_t CBWSignature
Definition usb_host_msd.h:79
uint32_t CBWTag
Definition usb_host_msd.h:81
uint32_t CBWDataTransferLength
Definition usb_host_msd.h:83
uint8_t CBWCBLength
Definition usb_host_msd.h:94
MSC Bulk-Only command status wrapper (CSW)
Definition usb_host_msd.h:101
uint8_t CSWStatus
Definition usb_host_msd.h:107
uint32_t CSWDataResidue
Definition usb_host_msd.h:105
uint32_t CSWTag
Definition usb_host_msd.h:104
uint32_t CSWSignature
Definition usb_host_msd.h:102
MSC UFI command information structure.
Definition usb_host_msd.h:118
usb_host_transfer_t * transfer
Definition usb_host_msd.h:124
usb_host_cbw_t * cbwBlock
Definition usb_host_msd.h:119
usb_host_csw_t * cswBlock
Definition usb_host_msd.h:120
uint32_t dataLength
Definition usb_host_msd.h:122
uint8_t retryTime
Definition usb_host_msd.h:125
uint32_t dataSofar
Definition usb_host_msd.h:123
uint8_t * dataBuffer
Definition usb_host_msd.h:121
uint8_t dataDirection
Definition usb_host_msd.h:126
MSD instance structure, MSD usb_host_class_handle pointer to this structure.
Definition usb_host_msd.h:131
uint8_t commandStatus
Definition usb_host_msd.h:144
void * commandCallbackParam
Definition usb_host_msd.h:139
transfer_callback_t commandCallbackFn
Definition usb_host_msd.h:138
usb_host_pipe_handle controlPipe
Definition usb_host_msd.h:135
usb_host_interface_handle interfaceHandle
Definition usb_host_msd.h:134
transfer_callback_t controlCallbackFn
Definition usb_host_msd.h:140
uint8_t internalResetRecovery
Definition usb_host_msd.h:145
void * controlCallbackParam
Definition usb_host_msd.h:141
usb_host_handle hostHandle
Definition usb_host_msd.h:132
usb_host_msd_command_t msdCommand
Definition usb_host_msd.h:143
usb_host_pipe_handle inPipe
Definition usb_host_msd.h:137
usb_device_handle deviceHandle
Definition usb_host_msd.h:133
usb_host_transfer_t * controlTransfer
Definition usb_host_msd.h:142
usb_host_pipe_handle outPipe
Definition usb_host_msd.h:136
USB host transfer structure.
Definition usb_host.h:241
UFI standard inquiry data structure.
Definition usb_host_msd.h:167
uint8_t version
Definition usb_host_msd.h:170
uint8_t peripheralDeviceType
Definition usb_host_msd.h:168
uint8_t reserved1[3]
Definition usb_host_msd.h:173
uint8_t productRevisionLevel[4]
Definition usb_host_msd.h:176
uint8_t additionalLength
Definition usb_host_msd.h:172
uint8_t productIdentification[16]
Definition usb_host_msd.h:175
uint8_t responseDataFormat
Definition usb_host_msd.h:171
uint8_t removableMediaBit
Definition usb_host_msd.h:169
uint8_t vendorInformation[8]
Definition usb_host_msd.h:174
UFI read capacity data structure.
Definition usb_host_msd.h:181
uint8_t lastLogicalBlockAddress[4]
Definition usb_host_msd.h:182
uint8_t blockLengthInBytes[4]
Definition usb_host_msd.h:183
UFI standard sense data structure.
Definition usb_host_msd.h:151
uint8_t reserved2[4]
Definition usb_host_msd.h:159
uint8_t reserved1
Definition usb_host_msd.h:153
uint8_t reserved3[4]
Definition usb_host_msd.h:162
uint8_t additionalSenseCodeQualifier
Definition usb_host_msd.h:161
uint8_t information[4]
Definition usb_host_msd.h:155
uint8_t senseKey
Definition usb_host_msd.h:154
uint8_t errorCode
Definition usb_host_msd.h:152
uint8_t additionalSenseCode
Definition usb_host_msd.h:160
uint8_t additionalSenseLength
Definition usb_host_msd.h:157