hc
2024-08-16 a24a44ff9ca902811b99aa9663d697cf452e08ef
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
/* SPDX-License-Identifier: GPL-2.0+ */
/*
 * Driver for Realtek PCI-Express card reader
 *
 * Copyright(c) 2009-2013 Realtek Semiconductor Corp. All rights reserved.
 *
 * Author:
 *   Wei WANG (wei_wang@realsil.com.cn)
 *   Micky Ching (micky_ching@realsil.com.cn)
 */
 
#ifndef __REALTEK_RTSX_SCSI_H
#define __REALTEK_RTSX_SCSI_H
 
#include "rtsx.h"
#include "rtsx_chip.h"
 
#define MS_SP_CMND        0xFA
#define MS_FORMAT        0xA0
#define GET_MS_INFORMATION    0xB0
 
#define VENDOR_CMND        0xF0
 
#define READ_STATUS        0x09
 
#define READ_EEPROM        0x04
#define WRITE_EEPROM        0x05
#define READ_MEM        0x0D
#define WRITE_MEM        0x0E
#define GET_BUS_WIDTH        0x13
#define GET_SD_CSD        0x14
#define TOGGLE_GPIO        0x15
#define TRACE_MSG        0x18
 
#define SCSI_APP_CMD        0x10
 
#define PP_READ10        0x1A
#define PP_WRITE10        0x0A
#define READ_HOST_REG        0x1D
#define WRITE_HOST_REG        0x0D
#define SET_VAR            0x05
#define GET_VAR            0x15
#define DMA_READ        0x16
#define DMA_WRITE        0x06
#define GET_DEV_STATUS        0x10
#define SET_CHIP_MODE        0x27
#define SUIT_CMD        0xE0
#define WRITE_PHY        0x07
#define READ_PHY        0x17
#define WRITE_EEPROM2        0x03
#define READ_EEPROM2        0x13
#define ERASE_EEPROM2        0x23
#define WRITE_EFUSE        0x04
#define READ_EFUSE        0x14
#define WRITE_CFG        0x0E
#define READ_CFG        0x1E
 
#define SPI_VENDOR_COMMAND        0x1C
 
#define    SCSI_SPI_GETSTATUS        0x00
#define    SCSI_SPI_SETPARAMETER        0x01
#define    SCSI_SPI_READFALSHID        0x02
#define    SCSI_SPI_READFLASH        0x03
#define    SCSI_SPI_WRITEFLASH        0x04
#define    SCSI_SPI_WRITEFLASHSTATUS    0x05
#define    SCSI_SPI_ERASEFLASH        0x06
 
#define INIT_BATCHCMD        0x41
#define ADD_BATCHCMD        0x42
#define SEND_BATCHCMD        0x43
#define GET_BATCHRSP        0x44
 
#define CHIP_NORMALMODE        0x00
#define CHIP_DEBUGMODE        0x01
 
/* SD Pass Through Command Extension */
#define SD_PASS_THRU_MODE    0xD0
#define SD_EXECUTE_NO_DATA    0xD1
#define SD_EXECUTE_READ        0xD2
#define SD_EXECUTE_WRITE    0xD3
#define SD_GET_RSP        0xD4
#define SD_HW_RST        0xD6
 
#ifdef SUPPORT_MAGIC_GATE
#define CMD_MSPRO_MG_RKEY    0xA4   /* Report Key Command */
#define CMD_MSPRO_MG_SKEY    0xA3   /* Send Key Command */
 
/* CBWCB field: key class */
#define KC_MG_R_PRO        0xBE   /* MG-R PRO*/
 
/* CBWCB field: key format */
#define KF_SET_LEAF_ID        0x31   /* Set Leaf ID */
#define KF_GET_LOC_EKB        0x32   /* Get Local EKB */
#define KF_CHG_HOST        0x33   /* Challenge (host) */
#define KF_RSP_CHG        0x34   /* Response and Challenge (device)  */
#define KF_RSP_HOST        0x35   /* Response (host) */
#define KF_GET_ICV        0x36   /* Get ICV */
#define KF_SET_ICV        0x37   /* SSet ICV */
#endif
 
/* Sense type */
#define    SENSE_TYPE_NO_SENSE                0
#define    SENSE_TYPE_MEDIA_CHANGE                1
#define    SENSE_TYPE_MEDIA_NOT_PRESENT            2
#define    SENSE_TYPE_MEDIA_LBA_OVER_RANGE            3
#define    SENSE_TYPE_MEDIA_LUN_NOT_SUPPORT        4
#define    SENSE_TYPE_MEDIA_WRITE_PROTECT            5
#define    SENSE_TYPE_MEDIA_INVALID_CMD_FIELD        6
#define    SENSE_TYPE_MEDIA_UNRECOVER_READ_ERR        7
#define    SENSE_TYPE_MEDIA_WRITE_ERR            8
#define SENSE_TYPE_FORMAT_IN_PROGRESS            9
#define SENSE_TYPE_FORMAT_CMD_FAILED            10
#ifdef SUPPORT_MAGIC_GATE
#define SENSE_TYPE_MG_KEY_FAIL_NOT_ESTAB        0x0b
#define SENSE_TYPE_MG_KEY_FAIL_NOT_AUTHEN        0x0c
#define SENSE_TYPE_MG_INCOMPATIBLE_MEDIUM        0x0d
#define SENSE_TYPE_MG_WRITE_ERR                0x0e
#endif
#ifdef SUPPORT_SD_LOCK
/* FOR Locked SD card*/
#define SENSE_TYPE_MEDIA_READ_FORBIDDEN            0x10
#endif
 
void scsi_show_command(struct rtsx_chip *chip);
void set_sense_type(struct rtsx_chip *chip, unsigned int lun, int sense_type);
void set_sense_data(struct rtsx_chip *chip, unsigned int lun, u8 err_code,
           u8 sense_key, u32 info, u8 asc, u8 ascq,
           u8 sns_key_info0, u16 sns_key_info1);
int rtsx_scsi_handler(struct scsi_cmnd *srb, struct rtsx_chip *chip);
 
#endif   /* __REALTEK_RTSX_SCSI_H */