scsi: ufs: ufs-mediatek: Support flexible parameters for SMC calls
Provide flexible number of parameters for UFS SMC calls to be used in a subsequent commit. Link: https://lore.kernel.org/r/20220616053725.5681-8-stanley.chu@mediatek.com Signed-off-by: Alice Chao <alice.chao@mediatek.com> Signed-off-by: Stanley Chu <stanley.chu@mediatek.com> Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
This commit is contained in:
parent
0836cc252a
commit
bc602ae977
|
@ -30,22 +30,6 @@
|
|||
#define CREATE_TRACE_POINTS
|
||||
#include "ufs-mediatek-trace.h"
|
||||
|
||||
#define ufs_mtk_smc(cmd, val, res) \
|
||||
arm_smccc_smc(MTK_SIP_UFS_CONTROL, \
|
||||
cmd, val, 0, 0, 0, 0, 0, &(res))
|
||||
|
||||
#define ufs_mtk_va09_pwr_ctrl(res, on) \
|
||||
ufs_mtk_smc(UFS_MTK_SIP_VA09_PWR_CTRL, on, res)
|
||||
|
||||
#define ufs_mtk_crypto_ctrl(res, enable) \
|
||||
ufs_mtk_smc(UFS_MTK_SIP_CRYPTO_CTRL, enable, res)
|
||||
|
||||
#define ufs_mtk_ref_clk_notify(on, res) \
|
||||
ufs_mtk_smc(UFS_MTK_SIP_REF_CLK_NOTIFICATION, on, res)
|
||||
|
||||
#define ufs_mtk_device_reset_ctrl(high, res) \
|
||||
ufs_mtk_smc(UFS_MTK_SIP_DEVICE_RESET, high, res)
|
||||
|
||||
static const struct ufs_dev_quirk ufs_mtk_dev_fixups[] = {
|
||||
{ .wmanufacturerid = UFS_VENDOR_MICRON,
|
||||
.model = UFS_ANY_MODEL,
|
||||
|
|
|
@ -143,4 +143,43 @@ struct ufs_mtk_host {
|
|||
u32 ip_ver;
|
||||
};
|
||||
|
||||
/*
|
||||
* SMC call wrapper function
|
||||
*/
|
||||
struct ufs_mtk_smc_arg {
|
||||
unsigned long cmd;
|
||||
struct arm_smccc_res *res;
|
||||
unsigned long v1;
|
||||
unsigned long v2;
|
||||
unsigned long v3;
|
||||
unsigned long v4;
|
||||
unsigned long v5;
|
||||
unsigned long v6;
|
||||
unsigned long v7;
|
||||
};
|
||||
|
||||
static void _ufs_mtk_smc(struct ufs_mtk_smc_arg s)
|
||||
{
|
||||
arm_smccc_smc(MTK_SIP_UFS_CONTROL,
|
||||
s.cmd, s.v1, s.v2, s.v3, s.v4, s.v5, s.v6, s.res);
|
||||
}
|
||||
|
||||
#define ufs_mtk_smc(...) \
|
||||
_ufs_mtk_smc((struct ufs_mtk_smc_arg) {__VA_ARGS__})
|
||||
|
||||
/*
|
||||
* SMC call interface
|
||||
*/
|
||||
#define ufs_mtk_va09_pwr_ctrl(res, on) \
|
||||
ufs_mtk_smc(UFS_MTK_SIP_VA09_PWR_CTRL, &(res), on)
|
||||
|
||||
#define ufs_mtk_crypto_ctrl(res, enable) \
|
||||
ufs_mtk_smc(UFS_MTK_SIP_CRYPTO_CTRL, &(res), enable)
|
||||
|
||||
#define ufs_mtk_ref_clk_notify(on, res) \
|
||||
ufs_mtk_smc(UFS_MTK_SIP_REF_CLK_NOTIFICATION, &(res), on)
|
||||
|
||||
#define ufs_mtk_device_reset_ctrl(high, res) \
|
||||
ufs_mtk_smc(UFS_MTK_SIP_DEVICE_RESET, &(res), high)
|
||||
|
||||
#endif /* !_UFS_MEDIATEK_H */
|
||||
|
|
Loading…
Reference in New Issue