2019-05-29 07:17:58 -07:00
/* SPDX-License-Identifier: GPL-2.0-only */
2015-10-28 13:15:49 +02:00
/* Copyright (c) 2015, The Linux Foundation. All rights reserved.
*/
# ifndef UFSHCD_PLTFRM_H_
# define UFSHCD_PLTFRM_H_
# include "ufshcd.h"
2019-03-16 13:04:41 +08:00
# define UFS_PWM_MODE 1
# define UFS_HS_MODE 2
struct ufs_dev_params {
u32 pwm_rx_gear ; /* pwm rx gear to work in */
u32 pwm_tx_gear ; /* pwm tx gear to work in */
u32 hs_rx_gear ; /* hs rx gear to work in */
u32 hs_tx_gear ; /* hs tx gear to work in */
u32 rx_lanes ; /* number of rx lanes */
u32 tx_lanes ; /* number of tx lanes */
u32 rx_pwr_pwm ; /* rx pwm working pwr */
u32 tx_pwr_pwm ; /* tx pwm working pwr */
u32 rx_pwr_hs ; /* rx hs working pwr */
u32 tx_pwr_hs ; /* tx hs working pwr */
u32 hs_rate ; /* rate A/B to work in HS */
u32 desired_working_mode ;
} ;
int ufshcd_get_pwr_dev_param ( struct ufs_dev_params * dev_param ,
struct ufs_pa_layer_attr * dev_max ,
struct ufs_pa_layer_attr * agreed_pwr ) ;
2015-10-28 13:15:49 +02:00
int ufshcd_pltfrm_init ( struct platform_device * pdev ,
2019-03-04 20:39:11 +01:00
const struct ufs_hba_variant_ops * vops ) ;
2015-10-28 13:15:49 +02:00
void ufshcd_pltfrm_shutdown ( struct platform_device * pdev ) ;
# ifdef CONFIG_PM
int ufshcd_pltfrm_suspend ( struct device * dev ) ;
int ufshcd_pltfrm_resume ( struct device * dev ) ;
int ufshcd_pltfrm_runtime_suspend ( struct device * dev ) ;
int ufshcd_pltfrm_runtime_resume ( struct device * dev ) ;
int ufshcd_pltfrm_runtime_idle ( struct device * dev ) ;
# else /* !CONFIG_PM */
# define ufshcd_pltfrm_suspend NULL
# define ufshcd_pltfrm_resume NULL
# define ufshcd_pltfrm_runtime_suspend NULL
# define ufshcd_pltfrm_runtime_resume NULL
# define ufshcd_pltfrm_runtime_idle NULL
# endif /* CONFIG_PM */
# endif /* UFSHCD_PLTFRM_H_ */