Re: [PATCH v3 07/10] scsi: ufs-mediatek: Support flexible parameters for smc calls

From: Bart Van Assche
Date: Tue Jun 14 2022 - 12:29:16 EST


On 6/14/22 07:16, Stanley Chu wrote:
From: Alice Chao <alice.chao@xxxxxxxxxxxx>

Provide flexible number of parameters for UFS SMC calls to be
easily used for future SMC usages.

How far in the future? Please only introduce what is needed for this patch series.

+/*
+ * SMC call wapper function
^^^^^^
typo

+ */
+#define _ufs_mtk_smc(cmd, res, v1, v2, v3, v4, v5, v6) \
+ arm_smccc_smc(MTK_SIP_UFS_CONTROL, \
+ cmd, v1, v2, v3, v4, v5, v6, &(res))
+
+#define _ufs_mtk_smc_0(cmd, res) \
+ _ufs_mtk_smc(cmd, res, 0, 0, 0, 0, 0, 0)
+
+#define _ufs_mtk_smc_1(cmd, res, v1) \
+ _ufs_mtk_smc(cmd, res, v1, 0, 0, 0, 0, 0)
+
+#define _ufs_mtk_smc_2(cmd, res, v1, v2) \
+ _ufs_mtk_smc(cmd, res, v1, v2, 0, 0, 0, 0)
+
+#define _ufs_mtk_smc_3(cmd, res, v1, v2, v3) \
+ _ufs_mtk_smc(cmd, res, v1, v2, v3, 0, 0, 0)
+
+#define _ufs_mtk_smc_4(cmd, res, v1, v2, v3, v4) \
+ _ufs_mtk_smc(cmd, res, v1, v2, v3, v4, 0, 0)
+
+#define _ufs_mtk_smc_5(cmd, res, v1, v2, v3, v4, v5) \
+ _ufs_mtk_smc(cmd, res, v1, v2, v3, v4, v5, 0)
+
+#define _ufs_mtk_smc_6(cmd, res, v1, v2, v3, v4, v5, v6) \
+ _ufs_mtk_smc(cmd, res, v1, v2, v3, v4, v5, v6)
+
+#define _ufs_mtk_smc_selector(cmd, res, v1, v2, v3, v4, v5, v6, FUNC, ...) FUNC
+
+#define ufs_mtk_smc(...) \
+ _ufs_mtk_smc_selector(__VA_ARGS__, \
+ _ufs_mtk_smc_6(__VA_ARGS__), \
+ _ufs_mtk_smc_5(__VA_ARGS__), \
+ _ufs_mtk_smc_4(__VA_ARGS__), \
+ _ufs_mtk_smc_3(__VA_ARGS__), \
+ _ufs_mtk_smc_2(__VA_ARGS__), \
+ _ufs_mtk_smc_1(__VA_ARGS__), \
+ _ufs_mtk_smc_0(__VA_ARGS__) \
+ )

If _ufs_mtk_smc() would be modified to accept an struct _ufs_mtk_args as its only argument, would that allow to simplify the above into the following?

#define ufs_mtk_smc(...) \
_ufs_mtk_smc((struct _ufs_mtk_args){__VA_ARGS__})

+/*
+ * Sip kernel interface
+ */

What is "Sip"? Should it perhaps be spelled as "SIP"?

Thanks,

Bart.