17e080842SHaojian Zhuang /* 293c78ed2SAntonio Nino Diaz * Copyright (c) 2017-2018, ARM Limited and Contributors. All rights reserved. 37e080842SHaojian Zhuang * 47e080842SHaojian Zhuang * SPDX-License-Identifier: BSD-3-Clause 57e080842SHaojian Zhuang */ 67e080842SHaojian Zhuang 7*c3cf06f1SAntonio Nino Diaz #ifndef DW_UFS_H 8*c3cf06f1SAntonio Nino Diaz #define DW_UFS_H 97e080842SHaojian Zhuang 1093c78ed2SAntonio Nino Diaz #include <stdint.h> 117e080842SHaojian Zhuang 127e080842SHaojian Zhuang /* Bus Throtting */ 137e080842SHaojian Zhuang #define BUSTHRTL 0xC0 147e080842SHaojian Zhuang /* Outstanding OCP Requests */ 157e080842SHaojian Zhuang #define OOCPR 0xC4 167e080842SHaojian Zhuang /* Fatal Error Interrupt Enable */ 177e080842SHaojian Zhuang #define FEIE 0xC8 187e080842SHaojian Zhuang /* C-Port Direct Access Configuration register */ 197e080842SHaojian Zhuang #define CDACFG 0xD0 207e080842SHaojian Zhuang /* C-Port Direct Access Transmit 1 register */ 217e080842SHaojian Zhuang #define CDATX1 0xD4 227e080842SHaojian Zhuang /* C-Port Direct Access Transmit 2 register */ 237e080842SHaojian Zhuang #define CDATX2 0xD8 247e080842SHaojian Zhuang /* C-Port Direct Access Receive 1 register */ 257e080842SHaojian Zhuang #define CDARX1 0xDC 267e080842SHaojian Zhuang /* C-Port Direct Access Receive 2 register */ 277e080842SHaojian Zhuang #define CDARX2 0xE0 287e080842SHaojian Zhuang /* C-Port Direct Access Status register */ 297e080842SHaojian Zhuang #define CDASTA 0xE4 307e080842SHaojian Zhuang /* UPIU Loopback Configuration register */ 317e080842SHaojian Zhuang #define LBMCFG 0xF0 327e080842SHaojian Zhuang /* UPIU Loopback Status */ 337e080842SHaojian Zhuang #define LBMSTA 0xF4 347e080842SHaojian Zhuang /* Debug register */ 357e080842SHaojian Zhuang #define DBG 0xF8 367e080842SHaojian Zhuang /* HClk Divider register */ 377e080842SHaojian Zhuang #define HCLKDIV 0xFC 387e080842SHaojian Zhuang 397e080842SHaojian Zhuang #define TX_HIBERN8TIME_CAP_OFFSET 0x000F 407e080842SHaojian Zhuang #define TX_FSM_STATE_OFFSET 0x0041 417e080842SHaojian Zhuang #define TX_FSM_STATE_LINE_RESET 7 427e080842SHaojian Zhuang #define TX_FSM_STATE_LINE_CFG 6 437e080842SHaojian Zhuang #define TX_FSM_STATE_HS_BURST 5 447e080842SHaojian Zhuang #define TX_FSM_STATE_LS_BURST 4 457e080842SHaojian Zhuang #define TX_FSM_STATE_STALL 3 467e080842SHaojian Zhuang #define TX_FSM_STATE_SLEEP 2 477e080842SHaojian Zhuang #define TX_FSM_STATE_HIBERN8 1 487e080842SHaojian Zhuang #define TX_FSM_STATE_DISABLE 0 497e080842SHaojian Zhuang 507e080842SHaojian Zhuang #define RX_MIN_ACTIVATETIME_CAP_OFFSET 0x008F 517e080842SHaojian Zhuang #define RX_HS_G2_SYNC_LENGTH_CAP_OFFSET 0x0094 527e080842SHaojian Zhuang #define RX_HS_G3_SYNC_LENGTH_CAP_OFFSET 0x0095 537e080842SHaojian Zhuang 547e080842SHaojian Zhuang #define PA_AVAIL_TX_DATA_LANES_OFFSET 0x1520 557e080842SHaojian Zhuang #define PA_TX_SKIP_OFFSET 0x155C 567e080842SHaojian Zhuang #define PA_TX_SKIP_PERIOD_OFFSET 0x155D 577e080842SHaojian Zhuang #define PA_LOCAL_TX_LCC_ENABLE_OFFSET 0x155E 587e080842SHaojian Zhuang #define PA_ACTIVE_TX_DATA_LANES_OFFSET 0x1560 597e080842SHaojian Zhuang #define PA_CONNECTED_TX_DATA_LANES_OFFSET 0x1561 607e080842SHaojian Zhuang #define PA_TX_TRAILING_CLOCKS_OFFSET 0x1564 617e080842SHaojian Zhuang #define PA_TX_GEAR_OFFSET 0x1568 627e080842SHaojian Zhuang #define PA_TX_TERMINATION_OFFSET 0x1569 637e080842SHaojian Zhuang #define PA_HS_SERIES_OFFSET 0x156A 647e080842SHaojian Zhuang #define PA_PWR_MODE_OFFSET 0x1571 657e080842SHaojian Zhuang #define PA_ACTIVE_RX_DATA_LANES_OFFSET 0x1580 667e080842SHaojian Zhuang #define PA_CONNECTED_RX_DATA_LANES_OFFSET 0x1581 677e080842SHaojian Zhuang #define PA_RX_PWR_STATUS_OFFSET 0x1582 687e080842SHaojian Zhuang #define PA_RX_GEAR_OFFSET 0x1583 697e080842SHaojian Zhuang #define PA_RX_TERMINATION_OFFSET 0x1584 707e080842SHaojian Zhuang #define PA_SCRAMBLING_OFFSET 0x1585 717e080842SHaojian Zhuang #define PA_MAX_RX_PWM_GEAR_OFFSET 0x1586 727e080842SHaojian Zhuang #define PA_MAX_RX_HS_GEAR_OFFSET 0x1587 737e080842SHaojian Zhuang #define PA_PACP_REQ_TIMEOUT_OFFSET 0x1590 747e080842SHaojian Zhuang #define PA_PACP_REQ_EOB_TIMEOUT_OFFSET 0x1591 757e080842SHaojian Zhuang #define PA_REMOTE_VER_INFO_OFFSET 0x15A0 767e080842SHaojian Zhuang #define PA_LOGICAL_LANE_MAP_OFFSET 0x15A1 777e080842SHaojian Zhuang #define PA_TACTIVATE_OFFSET 0x15A8 787e080842SHaojian Zhuang #define PA_PWR_MODE_USER_DATA0_OFFSET 0x15B0 797e080842SHaojian Zhuang #define PA_PWR_MODE_USER_DATA1_OFFSET 0x15B1 807e080842SHaojian Zhuang #define PA_PWR_MODE_USER_DATA2_OFFSET 0x15B2 817e080842SHaojian Zhuang #define PA_PWR_MODE_USER_DATA3_OFFSET 0x15B3 827e080842SHaojian Zhuang #define PA_PWR_MODE_USER_DATA4_OFFSET 0x15B4 837e080842SHaojian Zhuang #define PA_PWR_MODE_USER_DATA5_OFFSET 0x15B5 847e080842SHaojian Zhuang 857e080842SHaojian Zhuang #define DL_TC0_TX_FC_THRESHOLD_OFFSET 0x2040 867e080842SHaojian Zhuang #define DL_AFC0_CREDIT_THRESHOLD_OFFSET 0x2044 877e080842SHaojian Zhuang #define DL_TC0_OUT_ACK_THRESHOLD_OFFSET 0x2045 887e080842SHaojian Zhuang 897e080842SHaojian Zhuang #define DME_FC0_PROTECTION_TIMEOUT_OFFSET 0xD041 907e080842SHaojian Zhuang #define DME_TC0_REPLAY_TIMEOUT_OFFSET 0xD042 917e080842SHaojian Zhuang #define DME_AFC0_REQ_TIMEOUT_OFFSET 0xD043 927e080842SHaojian Zhuang #define DME_FC1_PROTECTION_TIMEOUT_OFFSET 0xD044 937e080842SHaojian Zhuang #define DME_TC1_REPLAY_TIMEOUT_OFFSET 0xD045 947e080842SHaojian Zhuang #define DME_AFC1_REQ_TIMEOUT_OFFSET 0xD046 957e080842SHaojian Zhuang 967e080842SHaojian Zhuang #define VS_MPHY_CFG_UPDT_OFFSET 0xD085 977e080842SHaojian Zhuang #define VS_MK2_EXTN_SUPPORT_OFFSET 0xD0AB 987e080842SHaojian Zhuang #define VS_MPHY_DISABLE_OFFSET 0xD0C1 997e080842SHaojian Zhuang #define VS_MPHY_DISABLE_MPHYDIS (1 << 0) 1007e080842SHaojian Zhuang 1017e080842SHaojian Zhuang typedef struct dw_ufs_params { 1027e080842SHaojian Zhuang uintptr_t reg_base; 1037e080842SHaojian Zhuang uintptr_t desc_base; 1047e080842SHaojian Zhuang size_t desc_size; 1057e080842SHaojian Zhuang unsigned long flags; 1067e080842SHaojian Zhuang } dw_ufs_params_t; 1077e080842SHaojian Zhuang 1087e080842SHaojian Zhuang int dw_ufs_init(dw_ufs_params_t *params); 1097e080842SHaojian Zhuang 110*c3cf06f1SAntonio Nino Diaz #endif /* DW_UFS_H */ 111