lkml.org 
[lkml]   [2022]   [Jun]   [14]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH v3 07/10] scsi: ufs-mediatek: Support flexible parameters for smc calls
    Date
    From: Alice Chao <alice.chao@mediatek.com>

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

    This is a preparation patch for the next patch.

    Reviewed-by: Stanley Chu <stanley.chu@mediatek.com>
    Signed-off-by: Alice Chao <alice.chao@mediatek.com>
    Signed-off-by: Stanley Chu <stanley.chu@mediatek.com>
    ---
    drivers/ufs/host/ufs-mediatek.c | 16 ----------
    drivers/ufs/host/ufs-mediatek.h | 56 +++++++++++++++++++++++++++++++++
    2 files changed, 56 insertions(+), 16 deletions(-)

    diff --git a/drivers/ufs/host/ufs-mediatek.c b/drivers/ufs/host/ufs-mediatek.c
    index 178043ab837c..9337ce27329b 100755
    --- a/drivers/ufs/host/ufs-mediatek.c
    +++ b/drivers/ufs/host/ufs-mediatek.c
    @@ -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,
    diff --git a/drivers/ufs/host/ufs-mediatek.h b/drivers/ufs/host/ufs-mediatek.h
    index 7e1913769671..9117427ca6c4 100755
    --- a/drivers/ufs/host/ufs-mediatek.h
    +++ b/drivers/ufs/host/ufs-mediatek.h
    @@ -143,4 +143,60 @@ struct ufs_mtk_host {
    u32 ip_ver;
    };

    +/*
    + * SMC call wapper function
    + */
    +#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__) \
    + )
    +
    +/*
    + * Sip kernel 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 */
    --
    2.18.0
    \
     
     \ /
      Last update: 2022-06-14 16:19    [W:4.307 / U:0.128 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site