/* SPDX-License-Identifier: GPL-2.0-only */ /* * UFS Host driver for Synopsys Designware Core * * Copyright (C) 2015-2016 Synopsys, Inc. (www.synopsys.com) * * Authors: Joao Pinto */ #ifndef _UFSHCD_DWC_H #define _UFSHCD_DWC_H /* PHY modes */ #define UFSHCD_DWC_PHY_MODE_ROM 0 /* RMMI Attributes */ #define CBREFCLKCTRL2 0x8132 #define CBCRCTRL 0x811F #define CBC10DIRECTCONF2 0x810E #define CBCREGADDRLSB 0x8116 #define CBCREGADDRMSB 0x8117 #define CBCREGWRLSB 0x8118 #define CBCREGWRMSB 0x8119 #define CBCREGRDLSB 0x811A #define CBCREGRDMSB 0x811B #define CBCREGRDWRSEL 0x811C #define CBREFREFCLK_GATE_OVR_EN BIT(7) /* M-PHY Attributes */ #define MTX_FSM_STATE 0x41 #define MRX_FSM_STATE 0xC1 /* M-PHY registers */ #define FAST_FLAGS(n) (0x401C + ((n) * 0x100)) #define RX_AFE_ATT_IDAC(n) (0x4000 + ((n) * 0x100)) #define RX_AFE_CTLE_IDAC(n) (0x4001 + ((n) * 0x100)) #define FW_CALIB_CCFG(n) (0x404D + ((n) * 0x100)) /* Tx/Rx FSM state */ enum rx_fsm_state { RX_STATE_DISABLED = 0, RX_STATE_HIBERN8 = 1, RX_STATE_SLEEP = 2, RX_STATE_STALL = 3, RX_STATE_LSBURST = 4, RX_STATE_HSBURST = 5, }; enum tx_fsm_state { TX_STATE_DISABLED = 0, TX_STATE_HIBERN8 = 1, TX_STATE_SLEEP = 2, TX_STATE_STALL = 3, TX_STATE_LSBURST = 4, TX_STATE_HSBURST = 5, }; struct ufshcd_dme_attr_val { u32 attr_sel; u32 mib_val; u8 peer; }; int ufshcd_dwc_link_startup_notify(struct ufs_hba *hba, enum ufs_notify_change_status status); int ufshcd_dwc_dme_set_attrs(struct ufs_hba *hba, const struct ufshcd_dme_attr_val *v, int n); #endif /* End of Header */