1 //<MStar Software> 2 //****************************************************************************** 3 // MStar Software 4 // Copyright (c) 2010 - 2012 MStar Semiconductor, Inc. All rights reserved. 5 // All software, firmware and related documentation herein ("MStar Software") are 6 // intellectual property of MStar Semiconductor, Inc. ("MStar") and protected by 7 // law, including, but not limited to, copyright law and international treaties. 8 // Any use, modification, reproduction, retransmission, or republication of all 9 // or part of MStar Software is expressly prohibited, unless prior written 10 // permission has been granted by MStar. 11 // 12 // By accessing, browsing and/or using MStar Software, you acknowledge that you 13 // have read, understood, and agree, to be bound by below terms ("Terms") and to 14 // comply with all applicable laws and regulations: 15 // 16 // 1. MStar shall retain any and all right, ownership and interest to MStar 17 // Software and any modification/derivatives thereof. 18 // No right, ownership, or interest to MStar Software and any 19 // modification/derivatives thereof is transferred to you under Terms. 20 // 21 // 2. You understand that MStar Software might include, incorporate or be 22 // supplied together with third party`s software and the use of MStar 23 // Software may require additional licenses from third parties. 24 // Therefore, you hereby agree it is your sole responsibility to separately 25 // obtain any and all third party right and license necessary for your use of 26 // such third party`s software. 27 // 28 // 3. MStar Software and any modification/derivatives thereof shall be deemed as 29 // MStar`s confidential information and you agree to keep MStar`s 30 // confidential information in strictest confidence and not disclose to any 31 // third party. 32 // 33 // 4. MStar Software is provided on an "AS IS" basis without warranties of any 34 // kind. Any warranties are hereby expressly disclaimed by MStar, including 35 // without limitation, any warranties of merchantability, non-infringement of 36 // intellectual property rights, fitness for a particular purpose, error free 37 // and in conformity with any international standard. You agree to waive any 38 // claim against MStar for any loss, damage, cost or expense that you may 39 // incur related to your use of MStar Software. 40 // In no event shall MStar be liable for any direct, indirect, incidental or 41 // consequential damages, including without limitation, lost of profit or 42 // revenues, lost or damage of data, and unauthorized system use. 43 // You agree that this Section 4 shall still apply without being affected 44 // even if MStar Software has been modified by MStar in accordance with your 45 // request or instruction for your use, except otherwise agreed by both 46 // parties in writing. 47 // 48 // 5. If requested, MStar may from time to time provide technical supports or 49 // services in relation with MStar Software to you for your use of 50 // MStar Software in conjunction with your or your customer`s product 51 // ("Services"). 52 // You understand and agree that, except otherwise agreed by both parties in 53 // writing, Services are provided on an "AS IS" basis and the warranty 54 // disclaimer set forth in Section 4 above shall apply. 55 // 56 // 6. Nothing contained herein shall be construed as by implication, estoppels 57 // or otherwise: 58 // (a) conferring any license or right to use MStar name, trademark, service 59 // mark, symbol or any other identification; 60 // (b) obligating MStar or any of its affiliates to furnish any person, 61 // including without limitation, you and your customers, any assistance 62 // of any kind whatsoever, or any information; or 63 // (c) conferring any license or right under any intellectual property right. 64 // 65 // 7. These terms shall be governed by and construed in accordance with the laws 66 // of Taiwan, R.O.C., excluding its conflict of law rules. 67 // Any and all dispute arising out hereof or related hereto shall be finally 68 // settled by arbitration referred to the Chinese Arbitration Association, 69 // Taipei in accordance with the ROC Arbitration Law and the Arbitration 70 // Rules of the Association by three (3) arbitrators appointed in accordance 71 // with the said Rules. 72 // The place of arbitration shall be in Taipei, Taiwan and the language shall 73 // be English. 74 // The arbitration award shall be final and binding to both parties. 75 // 76 //****************************************************************************** 77 //<MStar Software> 78 79 80 #ifndef _TRANSPORT_H_ 81 #define _TRANSPORT_H_ 82 83 #include <MsTypes.h> 84 #include "include/drvConfig.h" 85 //#include <kernel/blkdev.h> 86 #include "drvMassStor.h" 87 #include "drvSCSI.h" 88 /* Protocols */ 89 90 #define US_PR_CBI 0x00 /* CBI */ 91 #define US_PR_CB 0x01 /* CB */ 92 #define US_PR_BULK 0x50 /* BOT */ 93 #ifdef CONFIG_USB_STORAGE_HP8200e 94 #define US_PR_SCM_ATAPI 0x80 95 #endif 96 #ifdef CONFIG_USB_STORAGE_SDDR09 97 #define US_PR_EUSB_SDDR09 0x81 98 #endif 99 #ifdef CONFIG_USB_STORAGE_SDDR55 100 #define US_PR_SDDR55 0x82 101 #endif 102 #define US_PR_DPCM_USB 0xf0 103 104 #ifdef CONFIG_USB_STORAGE_FREECOM 105 #define US_PR_FREECOM 0xf1 106 #endif 107 108 #ifdef CONFIG_USB_STORAGE_DATAFAB 109 #define US_PR_DATAFAB 0xf2 110 #endif 111 112 #ifdef CONFIG_USB_STORAGE_JUMPSHOT 113 #define US_PR_JUMPSHOT 0xf3 114 #endif 115 116 #define US_PR_DEVICE 0xff 117 118 struct bulk_cb_wrap { 119 U32 Signature; 120 U32 Tag; 121 U32 DataTransferLength; 122 unsigned char Flags; 123 unsigned char Lun; 124 unsigned char Length; 125 unsigned char CDB[16]; 126 }; 127 128 #define US_BULK_CB_WRAP_LEN 31 129 #define US_BULK_CB_SIGN 0x43425355 130 #define US_BULK_FLAG_IN 1 131 #define US_BULK_FLAG_OUT 0 132 133 struct bulk_cs_wrap { 134 U32 Signature; 135 U32 Tag; 136 U32 Residue; 137 unsigned char Status; 138 unsigned char Filler[18]; 139 }; 140 141 #define US_BULK_CS_WRAP_LEN 13 142 #define US_BULK_CS_SIGN 0x53425355 143 144 #define US_BULK_CS_OLYMPUS_SIGN 0x55425355 145 #define US_BULK_STAT_OK 0 146 #define US_BULK_STAT_FAIL 1 147 #define US_BULK_STAT_PHASE 2 148 149 #define US_BULK_RESET_REQUEST 0xff 150 #define US_BULK_GET_MAX_LUN 0xfe 151 152 153 #define USB_STOR_XFER_GOOD 0 154 #define USB_STOR_XFER_SHORT 1 155 #define USB_STOR_XFER_STALLED 2 156 #define USB_STOR_XFER_LONG 3 157 #define USB_STOR_XFER_ERROR 4 158 #define USB_STOR_XFER_NO_DEV 5 159 160 #define USB_STOR_TRANSPORT_GOOD 0 161 #define USB_STOR_TRANSPORT_FAILED 1 162 #define USB_STOR_TRANSPORT_NO_SENSE 2 163 #define USB_STOR_TRANSPORT_ERROR 3 164 #define USB_STOR_TRANSPORT_NO_DEVICE 4 165 166 #define US_CBI_ADSC 0 167 168 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/ 169 extern int usb_stor_CBI_transport(Scsi_Cmnd*, struct us_data*); 170 171 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/ 172 extern int usb_stor_CB_transport(Scsi_Cmnd*, struct us_data*); 173 extern int usb_stor_CB_reset(struct us_data*); 174 175 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/ 176 extern int usb_stor_Bulk_transport(Scsi_Cmnd*, struct us_data*); 177 extern int usb_stor_Bulk_max_lun(struct us_data*); 178 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/ 179 extern int usb_stor_Bulk_reset(struct us_data*); 180 181 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/ 182 extern void usb_stor_invoke_transport(Scsi_Cmnd*, struct us_data*); 183 extern void usb_stor_stop_transport(struct us_data*); 184 185 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/ 186 extern int usb_stor_control_msg(struct us_data *us, U32 pipe, 187 unsigned char request, unsigned char requesttype, U16 value, U16 index, 188 void *data, U16 size, int timeout); 189 extern int usb_stor_clear_halt(struct us_data *us, U32 pipe); 190 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/ 191 192 extern int usb_stor_ctrl_transfer(struct us_data *us, U32 pipe, 193 unsigned char request, unsigned char requesttype, U16 value, U16 index, 194 void *data, U16 size); 195 extern int usb_stor_intr_transfer(struct us_data *us, void *buf, 196 U32 length); 197 /*USB HOST USB HOST USB HOST USB HOST USB HOST USB HOST*/ 198 extern int usb_stor_bulk_transfer_buf(struct us_data *us, U32 pipe, 199 void *buf, U32 length, U32 *act_len); 200 201 202 203 204 #endif 205