| /* SPDX-License-Identifier: GPL-2.0-only */ |
| /* |
| * Rockchip UFS Host Controller driver |
| * |
| * Copyright (C) 2025 Rockchip Electronics Co., Ltd. |
| */ |
| |
| #ifndef _UFS_ROCKCHIP_H_ |
| #define _UFS_ROCKCHIP_H_ |
| |
| #define SEL_TX_LANE0 0x0 |
| #define SEL_TX_LANE1 0x1 |
| #define SEL_TX_LANE2 0x2 |
| #define SEL_TX_LANE3 0x3 |
| #define SEL_RX_LANE0 0x4 |
| #define SEL_RX_LANE1 0x5 |
| #define SEL_RX_LANE2 0x6 |
| #define SEL_RX_LANE3 0x7 |
| |
| #define VND_TX_CLK_PRD 0xAA |
| #define VND_TX_CLK_PRD_EN 0xA9 |
| #define VND_TX_LINERESET_PVALUE2 0xAB |
| #define VND_TX_LINERESET_PVALUE1 0xAC |
| #define VND_TX_LINERESET_VALUE 0xAD |
| #define VND_TX_BASE_NVALUE 0x93 |
| #define VND_TX_TASE_VALUE 0x94 |
| #define VND_TX_POWER_SAVING_CTRL 0x7F |
| #define VND_RX_CLK_PRD 0x12 |
| #define VND_RX_CLK_PRD_EN 0x11 |
| #define VND_RX_LINERESET_PVALUE2 0x1B |
| #define VND_RX_LINERESET_PVALUE1 0x1C |
| #define VND_RX_LINERESET_VALUE 0x1D |
| #define VND_RX_LINERESET_OPTION 0x25 |
| #define VND_RX_POWER_SAVING_CTRL 0x2F |
| #define VND_RX_SAVE_DET_CTRL 0x1E |
| |
| #define CMN_REG23 0x8C |
| #define CMN_REG25 0x94 |
| #define TRSV0_REG08 0xE0 |
| #define TRSV1_REG08 0x220 |
| #define TRSV0_REG14 0x110 |
| #define TRSV1_REG14 0x250 |
| #define TRSV0_REG15 0x134 |
| #define TRSV1_REG15 0x274 |
| #define TRSV0_REG16 0x128 |
| #define TRSV1_REG16 0x268 |
| #define TRSV0_REG17 0x12C |
| #define TRSV1_REG17 0x26c |
| #define TRSV0_REG18 0x120 |
| #define TRSV1_REG18 0x260 |
| #define TRSV0_REG29 0x164 |
| #define TRSV1_REG29 0x2A4 |
| #define TRSV0_REG2E 0x178 |
| #define TRSV1_REG2E 0x2B8 |
| #define TRSV0_REG3C 0x1B0 |
| #define TRSV1_REG3C 0x2F0 |
| #define TRSV0_REG3D 0x1B4 |
| #define TRSV1_REG3D 0x2F4 |
| |
| #define MPHY_CFG 0x200 |
| #define MPHY_CFG_ENABLE 0x40 |
| #define MPHY_CFG_DISABLE 0x0 |
| |
| #define MIB_T_DBG_CPORT_TX_ENDIAN 0xc022 |
| #define MIB_T_DBG_CPORT_RX_ENDIAN 0xc023 |
| |
| struct ufs_rockchip_host { |
| struct ufs_hba *hba; |
| void __iomem *ufs_phy_ctrl; |
| void __iomem *ufs_sys_ctrl; |
| void __iomem *mphy_base; |
| struct gpio_desc *rst_gpio; |
| struct reset_control *rst; |
| struct clk *ref_out_clk; |
| struct clk_bulk_data *clks; |
| uint64_t caps; |
| }; |
| |
| #define ufs_sys_writel(base, val, reg) \ |
| writel((val), (base) + (reg)) |
| #define ufs_sys_readl(base, reg) readl((base) + (reg)) |
| #define ufs_sys_set_bits(base, mask, reg) \ |
| ufs_sys_writel( \ |
| (base), ((mask) | (ufs_sys_readl((base), (reg)))), (reg)) |
| #define ufs_sys_ctrl_clr_bits(base, mask, reg) \ |
| ufs_sys_writel((base), \ |
| ((~(mask)) & (ufs_sys_readl((base), (reg)))), \ |
| (reg)) |
| |
| #endif /* _UFS_ROCKCHIP_H_ */ |