Back to home page

OSCL-LXR

 
 

    


0001 /* SPDX-License-Identifier: GPL-2.0-or-later */
0002 /*
0003  * Copyright (C) 2013 Samsung Electronics Co., Ltd.
0004  */
0005 
0006 #ifndef _UNIPRO_H_
0007 #define _UNIPRO_H_
0008 
0009 /*
0010  * M-TX Configuration Attributes
0011  */
0012 #define TX_HIBERN8TIME_CAPABILITY       0x000F
0013 #define TX_MODE                 0x0021
0014 #define TX_HSRATE_SERIES            0x0022
0015 #define TX_HSGEAR               0x0023
0016 #define TX_PWMGEAR              0x0024
0017 #define TX_AMPLITUDE                0x0025
0018 #define TX_HS_SLEWRATE              0x0026
0019 #define TX_SYNC_SOURCE              0x0027
0020 #define TX_HS_SYNC_LENGTH           0x0028
0021 #define TX_HS_PREPARE_LENGTH            0x0029
0022 #define TX_LS_PREPARE_LENGTH            0x002A
0023 #define TX_HIBERN8_CONTROL          0x002B
0024 #define TX_LCC_ENABLE               0x002C
0025 #define TX_PWM_BURST_CLOSURE_EXTENSION      0x002D
0026 #define TX_BYPASS_8B10B_ENABLE          0x002E
0027 #define TX_DRIVER_POLARITY          0x002F
0028 #define TX_HS_UNTERMINATED_LINE_DRIVE_ENABLE    0x0030
0029 #define TX_LS_TERMINATED_LINE_DRIVE_ENABLE  0x0031
0030 #define TX_LCC_SEQUENCER            0x0032
0031 #define TX_MIN_ACTIVATETIME         0x0033
0032 #define TX_PWM_G6_G7_SYNC_LENGTH        0x0034
0033 #define TX_REFCLKFREQ               0x00EB
0034 #define TX_CFGCLKFREQVAL            0x00EC
0035 #define CFGEXTRATTR             0x00F0
0036 #define DITHERCTRL2             0x00F1
0037 
0038 /*
0039  * M-RX Configuration Attributes
0040  */
0041 #define RX_HS_G1_SYNC_LENGTH_CAP        0x008B
0042 #define RX_HS_G1_PREP_LENGTH_CAP        0x008C
0043 #define RX_MIN_ACTIVATETIME_CAPABILITY      0x008F
0044 #define RX_HIBERN8TIME_CAPABILITY       0x0092
0045 #define RX_HS_G2_SYNC_LENGTH_CAP        0x0094
0046 #define RX_HS_G3_SYNC_LENGTH_CAP        0x0095
0047 #define RX_HS_G2_PREP_LENGTH_CAP        0x0096
0048 #define RX_HS_G3_PREP_LENGTH_CAP        0x0097
0049 #define RX_ADV_GRANULARITY_CAP          0x0098
0050 #define RX_HIBERN8TIME_CAP          0x0092
0051 #define RX_ADV_HIBERN8TIME_CAP          0x0099
0052 #define RX_ADV_MIN_ACTIVATETIME_CAP     0x009A
0053 #define RX_MODE                 0x00A1
0054 #define RX_HSRATE_SERIES            0x00A2
0055 #define RX_HSGEAR               0x00A3
0056 #define RX_PWMGEAR              0x00A4
0057 #define RX_LS_TERMINATED_ENABLE         0x00A5
0058 #define RX_HS_UNTERMINATED_ENABLE       0x00A6
0059 #define RX_ENTER_HIBERN8            0x00A7
0060 #define RX_BYPASS_8B10B_ENABLE          0x00A8
0061 #define RX_TERMINATION_FORCE_ENABLE     0x00A9
0062 #define RXCALCTRL               0x00B4
0063 #define RXSQCTRL                0x00B5
0064 #define CFGRXCDR8               0x00BA
0065 #define CFGRXOVR8               0x00BD
0066 #define CFGRXOVR6               0x00BF
0067 #define RXDIRECTCTRL2               0x00C7
0068 #define CFGRXOVR4               0x00E9
0069 #define RX_REFCLKFREQ               0x00EB
0070 #define RX_CFGCLKFREQVAL            0x00EC
0071 #define CFGWIDEINLN             0x00F0
0072 #define ENARXDIRECTCFG4             0x00F2
0073 #define ENARXDIRECTCFG3             0x00F3
0074 #define ENARXDIRECTCFG2             0x00F4
0075 
0076 
0077 #define is_mphy_tx_attr(attr)           (attr < RX_MODE)
0078 #define RX_ADV_FINE_GRAN_STEP(x)        ((((x) & 0x3) << 1) | 0x1)
0079 #define SYNC_LEN_FINE(x)            ((x) & 0x3F)
0080 #define SYNC_LEN_COARSE(x)          ((1 << 6) | ((x) & 0x3F))
0081 #define PREP_LEN(x)             ((x) & 0xF)
0082 
0083 #define RX_MIN_ACTIVATETIME_UNIT_US     100
0084 #define HIBERN8TIME_UNIT_US         100
0085 
0086 /*
0087  * Common Block Attributes
0088  */
0089 #define TX_GLOBALHIBERNATE          UNIPRO_CB_OFFSET(0x002B)
0090 #define REFCLKMODE              UNIPRO_CB_OFFSET(0x00BF)
0091 #define DIRECTCTRL19                UNIPRO_CB_OFFSET(0x00CD)
0092 #define DIRECTCTRL10                UNIPRO_CB_OFFSET(0x00E6)
0093 #define CDIRECTCTRL6                UNIPRO_CB_OFFSET(0x00EA)
0094 #define RTOBSERVESELECT             UNIPRO_CB_OFFSET(0x00F0)
0095 #define CBDIVFACTOR             UNIPRO_CB_OFFSET(0x00F1)
0096 #define CBDCOCTRL5              UNIPRO_CB_OFFSET(0x00F3)
0097 #define CBPRGPLL2               UNIPRO_CB_OFFSET(0x00F8)
0098 #define CBPRGTUNING             UNIPRO_CB_OFFSET(0x00FB)
0099 
0100 #define UNIPRO_CB_OFFSET(x)         (0x8000 | x)
0101 
0102 /*
0103  * PHY Adapter attributes
0104  */
0105 #define PA_PHY_TYPE     0x1500
0106 #define PA_AVAILTXDATALANES 0x1520
0107 #define PA_MAXTXSPEEDFAST   0x1521
0108 #define PA_MAXTXSPEEDSLOW   0x1522
0109 #define PA_MAXRXSPEEDFAST   0x1541
0110 #define PA_MAXRXSPEEDSLOW   0x1542
0111 #define PA_TXLINKSTARTUPHS  0x1544
0112 #define PA_AVAILRXDATALANES 0x1540
0113 #define PA_MINRXTRAILINGCLOCKS  0x1543
0114 #define PA_LOCAL_TX_LCC_ENABLE  0x155E
0115 #define PA_ACTIVETXDATALANES    0x1560
0116 #define PA_CONNECTEDTXDATALANES 0x1561
0117 #define PA_TXFORCECLOCK     0x1562
0118 #define PA_TXPWRMODE        0x1563
0119 #define PA_TXTRAILINGCLOCKS 0x1564
0120 #define PA_TXSPEEDFAST      0x1565
0121 #define PA_TXSPEEDSLOW      0x1566
0122 #define PA_TXPWRSTATUS      0x1567
0123 #define PA_TXGEAR       0x1568
0124 #define PA_TXTERMINATION    0x1569
0125 #define PA_HSSERIES     0x156A
0126 #define PA_LEGACYDPHYESCDL  0x1570
0127 #define PA_PWRMODE      0x1571
0128 #define PA_ACTIVERXDATALANES    0x1580
0129 #define PA_CONNECTEDRXDATALANES 0x1581
0130 #define PA_RXPWRSTATUS      0x1582
0131 #define PA_RXGEAR       0x1583
0132 #define PA_RXTERMINATION    0x1584
0133 #define PA_MAXRXPWMGEAR     0x1586
0134 #define PA_MAXRXHSGEAR      0x1587
0135 #define PA_PACPREQTIMEOUT   0x1590
0136 #define PA_PACPREQEOBTIMEOUT    0x1591
0137 #define PA_REMOTEVERINFO    0x15A0
0138 #define PA_LOGICALLANEMAP   0x15A1
0139 #define PA_SLEEPNOCONFIGTIME    0x15A2
0140 #define PA_STALLNOCONFIGTIME    0x15A3
0141 #define PA_SAVECONFIGTIME   0x15A4
0142 #define PA_RXHSUNTERMCAP    0x15A5
0143 #define PA_RXLSTERMCAP      0x15A6
0144 #define PA_GRANULARITY      0x15AA
0145 #define PA_HIBERN8TIME      0x15A7
0146 #define PA_LOCALVERINFO     0x15A9
0147 #define PA_GRANULARITY      0x15AA
0148 #define PA_TACTIVATE        0x15A8
0149 #define PA_PWRMODEUSERDATA0 0x15B0
0150 #define PA_PWRMODEUSERDATA1 0x15B1
0151 #define PA_PWRMODEUSERDATA2 0x15B2
0152 #define PA_PWRMODEUSERDATA3 0x15B3
0153 #define PA_PWRMODEUSERDATA4 0x15B4
0154 #define PA_PWRMODEUSERDATA5 0x15B5
0155 #define PA_PWRMODEUSERDATA6 0x15B6
0156 #define PA_PWRMODEUSERDATA7 0x15B7
0157 #define PA_PWRMODEUSERDATA8 0x15B8
0158 #define PA_PWRMODEUSERDATA9 0x15B9
0159 #define PA_PWRMODEUSERDATA10    0x15BA
0160 #define PA_PWRMODEUSERDATA11    0x15BB
0161 #define PA_PACPFRAMECOUNT   0x15C0
0162 #define PA_PACPERRORCOUNT   0x15C1
0163 #define PA_PHYTESTCONTROL   0x15C2
0164 #define PA_TXHSADAPTTYPE       0x15D4
0165 
0166 /* Adpat type for PA_TXHSADAPTTYPE attribute */
0167 #define PA_REFRESH_ADAPT       0x00
0168 #define PA_INITIAL_ADAPT       0x01
0169 #define PA_NO_ADAPT            0x03
0170 
0171 #define PA_TACTIVATE_TIME_UNIT_US   10
0172 #define PA_HIBERN8_TIME_UNIT_US     100
0173 
0174 /*Other attributes*/
0175 #define VS_POWERSTATE       0xD083
0176 #define VS_MPHYCFGUPDT      0xD085
0177 #define VS_DEBUGOMC     0xD09E
0178 
0179 #define PA_GRANULARITY_MIN_VAL  1
0180 #define PA_GRANULARITY_MAX_VAL  6
0181 
0182 /* PHY Adapter Protocol Constants */
0183 #define PA_MAXDATALANES 4
0184 
0185 #define DL_FC0ProtectionTimeOutVal_Default  8191
0186 #define DL_TC0ReplayTimeOutVal_Default      65535
0187 #define DL_AFC0ReqTimeOutVal_Default        32767
0188 #define DL_FC1ProtectionTimeOutVal_Default  8191
0189 #define DL_TC1ReplayTimeOutVal_Default      65535
0190 #define DL_AFC1ReqTimeOutVal_Default        32767
0191 
0192 #define DME_LocalFC0ProtectionTimeOutVal    0xD041
0193 #define DME_LocalTC0ReplayTimeOutVal        0xD042
0194 #define DME_LocalAFC0ReqTimeOutVal      0xD043
0195 
0196 /* PA power modes */
0197 enum {
0198     FAST_MODE   = 1,
0199     SLOW_MODE   = 2,
0200     FASTAUTO_MODE   = 4,
0201     SLOWAUTO_MODE   = 5,
0202     UNCHANGED   = 7,
0203 };
0204 
0205 #define PWRMODE_MASK        0xF
0206 #define PWRMODE_RX_OFFSET   4
0207 
0208 /* PA TX/RX Frequency Series */
0209 enum {
0210     PA_HS_MODE_A    = 1,
0211     PA_HS_MODE_B    = 2,
0212 };
0213 
0214 enum ufs_pwm_gear_tag {
0215     UFS_PWM_DONT_CHANGE,    /* Don't change Gear */
0216     UFS_PWM_G1,     /* PWM Gear 1 (default for reset) */
0217     UFS_PWM_G2,     /* PWM Gear 2 */
0218     UFS_PWM_G3,     /* PWM Gear 3 */
0219     UFS_PWM_G4,     /* PWM Gear 4 */
0220     UFS_PWM_G5,     /* PWM Gear 5 */
0221     UFS_PWM_G6,     /* PWM Gear 6 */
0222     UFS_PWM_G7,     /* PWM Gear 7 */
0223 };
0224 
0225 enum ufs_hs_gear_tag {
0226     UFS_HS_DONT_CHANGE, /* Don't change Gear */
0227     UFS_HS_G1,      /* HS Gear 1 (default for reset) */
0228     UFS_HS_G2,      /* HS Gear 2 */
0229     UFS_HS_G3,      /* HS Gear 3 */
0230     UFS_HS_G4,      /* HS Gear 4 */
0231     UFS_HS_G5       /* HS Gear 5 */
0232 };
0233 
0234 enum ufs_unipro_ver {
0235     UFS_UNIPRO_VER_RESERVED = 0,
0236     UFS_UNIPRO_VER_1_40 = 1, /* UniPro version 1.40 */
0237     UFS_UNIPRO_VER_1_41 = 2, /* UniPro version 1.41 */
0238     UFS_UNIPRO_VER_1_6  = 3, /* UniPro version 1.6 */
0239     UFS_UNIPRO_VER_1_61 = 4, /* UniPro version 1.61 */
0240     UFS_UNIPRO_VER_1_8  = 5, /* UniPro version 1.8 */
0241     UFS_UNIPRO_VER_MAX  = 6, /* UniPro unsupported version */
0242     /* UniPro version field mask in PA_LOCALVERINFO */
0243     UFS_UNIPRO_VER_MASK = 0xF,
0244 };
0245 
0246 /*
0247  * Data Link Layer Attributes
0248  */
0249 #define DL_TXPREEMPTIONCAP  0x2000
0250 #define DL_TC0TXMAXSDUSIZE  0x2001
0251 #define DL_TC0RXINITCREDITVAL   0x2002
0252 #define DL_TC1TXMAXSDUSIZE  0x2003
0253 #define DL_TC1RXINITCREDITVAL   0x2004
0254 #define DL_TC0TXBUFFERSIZE  0x2005
0255 #define DL_TC1TXBUFFERSIZE  0x2006
0256 #define DL_TC0TXFCTHRESHOLD 0x2040
0257 #define DL_FC0PROTTIMEOUTVAL    0x2041
0258 #define DL_TC0REPLAYTIMEOUTVAL  0x2042
0259 #define DL_AFC0REQTIMEOUTVAL    0x2043
0260 #define DL_AFC0CREDITTHRESHOLD  0x2044
0261 #define DL_TC0OUTACKTHRESHOLD   0x2045
0262 #define DL_PEERTC0PRESENT   0x2046
0263 #define DL_PEERTC0RXINITCREVAL  0x2047
0264 #define DL_TC1TXFCTHRESHOLD 0x2060
0265 #define DL_FC1PROTTIMEOUTVAL    0x2061
0266 #define DL_TC1REPLAYTIMEOUTVAL  0x2062
0267 #define DL_AFC1REQTIMEOUTVAL    0x2063
0268 #define DL_AFC1CREDITTHRESHOLD  0x2064
0269 #define DL_TC1OUTACKTHRESHOLD   0x2065
0270 #define DL_PEERTC1PRESENT   0x2066
0271 #define DL_PEERTC1RXINITCREVAL  0x2067
0272 
0273 /*
0274  * Network Layer Attributes
0275  */
0276 #define N_DEVICEID      0x3000
0277 #define N_DEVICEID_VALID    0x3001
0278 #define N_TC0TXMAXSDUSIZE   0x3020
0279 #define N_TC1TXMAXSDUSIZE   0x3021
0280 
0281 /*
0282  * Transport Layer Attributes
0283  */
0284 #define T_NUMCPORTS     0x4000
0285 #define T_NUMTESTFEATURES   0x4001
0286 #define T_CONNECTIONSTATE   0x4020
0287 #define T_PEERDEVICEID      0x4021
0288 #define T_PEERCPORTID       0x4022
0289 #define T_TRAFFICCLASS      0x4023
0290 #define T_PROTOCOLID        0x4024
0291 #define T_CPORTFLAGS        0x4025
0292 #define T_TXTOKENVALUE      0x4026
0293 #define T_RXTOKENVALUE      0x4027
0294 #define T_LOCALBUFFERSPACE  0x4028
0295 #define T_PEERBUFFERSPACE   0x4029
0296 #define T_CREDITSTOSEND     0x402A
0297 #define T_CPORTMODE     0x402B
0298 #define T_TC0TXMAXSDUSIZE   0x4060
0299 #define T_TC1TXMAXSDUSIZE   0x4061
0300 
0301 /* CPort setting */
0302 #define E2EFC_ON    (1 << 0)
0303 #define E2EFC_OFF   (0 << 0)
0304 #define CSD_N_ON    (0 << 1)
0305 #define CSD_N_OFF   (1 << 1)
0306 #define CSV_N_ON    (0 << 2)
0307 #define CSV_N_OFF   (1 << 2)
0308 #define CPORT_DEF_FLAGS (CSV_N_OFF | CSD_N_OFF | E2EFC_OFF)
0309 
0310 /* CPort connection state */
0311 enum {
0312     CPORT_IDLE = 0,
0313     CPORT_CONNECTED,
0314 };
0315 
0316 #endif /* _UNIPRO_H_ */