1 | /* SPDX-License-Identifier: GPL-2.0-only */ |
2 | /* Copyright (c) 2015, The Linux Foundation. All rights reserved. |
3 | */ |
4 | |
5 | #ifndef UFSHCD_PLTFRM_H_ |
6 | #define UFSHCD_PLTFRM_H_ |
7 | |
8 | #include <ufs/ufshcd.h> |
9 | |
10 | #define UFS_PWM_MODE 1 |
11 | #define UFS_HS_MODE 2 |
12 | |
13 | struct ufs_host_params { |
14 | u32 pwm_rx_gear; /* pwm rx gear to work in */ |
15 | u32 pwm_tx_gear; /* pwm tx gear to work in */ |
16 | u32 hs_rx_gear; /* hs rx gear to work in */ |
17 | u32 hs_tx_gear; /* hs tx gear to work in */ |
18 | u32 rx_lanes; /* number of rx lanes */ |
19 | u32 tx_lanes; /* number of tx lanes */ |
20 | u32 rx_pwr_pwm; /* rx pwm working pwr */ |
21 | u32 tx_pwr_pwm; /* tx pwm working pwr */ |
22 | u32 rx_pwr_hs; /* rx hs working pwr */ |
23 | u32 tx_pwr_hs; /* tx hs working pwr */ |
24 | u32 hs_rate; /* rate A/B to work in HS */ |
25 | u32 desired_working_mode; |
26 | }; |
27 | |
28 | int ufshcd_negotiate_pwr_params(const struct ufs_host_params *host_params, |
29 | const struct ufs_pa_layer_attr *dev_max, |
30 | struct ufs_pa_layer_attr *agreed_pwr); |
31 | void ufshcd_init_host_params(struct ufs_host_params *host_params); |
32 | int ufshcd_pltfrm_init(struct platform_device *pdev, |
33 | const struct ufs_hba_variant_ops *vops); |
34 | int ufshcd_populate_vreg(struct device *dev, const char *name, |
35 | struct ufs_vreg **out_vreg, bool skip_current); |
36 | |
37 | #endif /* UFSHCD_PLTFRM_H_ */ |
38 | |