blob: f2798fc6f2a5d6297916c68470b85783dadfefe4 [file] [log] [blame]
xjb04a4022021-11-25 15:01:52 +08001/* SPDX-License-Identifier: GPL-2.0 */
2/*
3 * Copyright (C) 2019 MediaTek Inc.
4 */
5
6#ifndef _UFS_MEDIATEK_H
7#define _UFS_MEDIATEK_H
8
9/*
10 * Vendor specific UFSHCI Registers
11 */
12#define REG_UFS_ADDR_XOUFS_ST 0x144
13
14/* UFS_ADDR_XOUFS_ST 0x144 */
15#define XOUFS_RELEASE 0x0
16#define XOUFS_REQUEST 0x1
17#define XOUFS_ACK 0x2
18
19/*
20 * Vendor specific pre-defined parameters
21 */
22#define UFS_MTK_LIMIT_NUM_LANES_RX 1
23#define UFS_MTK_LIMIT_NUM_LANES_TX 1
24#define UFS_MTK_LIMIT_HSGEAR_RX UFS_HS_G3
25#define UFS_MTK_LIMIT_HSGEAR_TX UFS_HS_G3
26#define UFS_MTK_LIMIT_PWMGEAR_RX UFS_PWM_G4
27#define UFS_MTK_LIMIT_PWMGEAR_TX UFS_PWM_G4
28#define UFS_MTK_LIMIT_RX_PWR_PWM SLOW_MODE
29#define UFS_MTK_LIMIT_TX_PWR_PWM SLOW_MODE
30#define UFS_MTK_LIMIT_RX_PWR_HS FAST_MODE
31#define UFS_MTK_LIMIT_TX_PWR_HS FAST_MODE
32#define UFS_MTK_LIMIT_HS_RATE PA_HS_MODE_B
33#define UFS_MTK_LIMIT_DESIRED_MODE UFS_HS_MODE
34
35/*
36 * Other attributes
37 */
38#define VS_DEBUGCLOCKENABLE 0xD0A1
39#define VS_SAVEPOWERCONTROL 0xD0A6
40#define VS_UNIPROPOWERDOWNCONTROL 0xD0A8
41
42/*
43 * VS_DEBUGCLOCKENABLE
44 */
45enum {
46 TX_SYMBOL_CLK_REQ_FORCE = 5,
47};
48
49/*
50 * VS_SAVEPOWERCONTROL
51 */
52enum {
53 RX_SYMBOL_CLK_GATE_EN = 0,
54 SYS_CLK_GATE_EN = 2,
55 TX_CLK_GATE_EN = 3,
56};
57
58/*
59 * Ref-clk control mode
60 */
61enum {
62 REF_CLK_SW_MODE = 0,
63 REF_CLK_HALF_HW_MODE = 1,
64 REF_CLK_HW_MODE = 2
65};
66
67/* HW ref-clk control timeout value */
68#define REF_CLK_CTRL_TOUT_MS 3
69
70struct ufs_mtk_host {
71 struct ufs_hba *hba;
72 struct phy *mphy;
73 u32 refclk_ctrl;
74};
75
76#endif /* !_UFS_MEDIATEK_H */
77