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
|
#define CREATE_TRACE_POINTS
|
||||||
#include "ufs-mediatek-trace.h"
|
#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[] = {
|
static const struct ufs_dev_quirk ufs_mtk_dev_fixups[] = {
|
||||||
{ .wmanufacturerid = UFS_VENDOR_MICRON,
|
{ .wmanufacturerid = UFS_VENDOR_MICRON,
|
||||||
.model = UFS_ANY_MODEL,
|
.model = UFS_ANY_MODEL,
|
||||||
|
|
|
@ -143,4 +143,43 @@ struct ufs_mtk_host {
|
||||||
u32 ip_ver;
|
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 */
|
#endif /* !_UFS_MEDIATEK_H */
|
||||||
|
|
Loading…
Reference in New Issue