Message ID | 20240308070241.9163-5-peter.wang@mediatek.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | ufs: host: mediatek: Provide features and fixes in MediaTek platforms | expand |
On 3/7/24 23:02, peter.wang@mediatek.com wrote: > +/* > + * SiP commands > + */ An additional comment that explains what "SiP" means would be welcome. Thanks, Bart.
On Fri, 2024-03-08 at 15:02 +0800, peter.wang@mediatek.com wrote: > From: Peter Wang <peter.wang@mediatek.com> > > From: Po-Wen Kao <powen.kao@mediatek.com> > > Move sip command and define to a new sip header file. > > Reviewed-by: Peter Wang <peter.wang@mediatek.com> > Signed-off-by: Peter Wang <peter.wang@mediatek.com> > Signed-off-by: Po-Wen Kao <powen.kao@mediatek.com> > --- > drivers/ufs/host/ufs-mediatek-sip.h | 90 > +++++++++++++++++++++++++++++ > drivers/ufs/host/ufs-mediatek.c | 3 +- > drivers/ufs/host/ufs-mediatek.h | 79 ------------------------- > 3 files changed, 92 insertions(+), 80 deletions(-) > create mode 100755 drivers/ufs/host/ufs-mediatek-sip.h > > diff --git a/drivers/ufs/host/ufs-mediatek-sip.h > b/drivers/ufs/host/ufs-mediatek-sip.h > new file mode 100755 > index 000000000000..30146bb1ccbe > --- /dev/null > +++ b/drivers/ufs/host/ufs-mediatek-sip.h > @@ -0,0 +1,90 @@ > +/* SPDX-License-Identifier: GPL-2.0 */ > +/* > + * Copyright (C) 2022 MediaTek Inc. > + */ > + > +#ifndef _UFS_MEDIATEK_SIP_H > +#define _UFS_MEDIATEK_SIP_H > + > +#include <linux/soc/mediatek/mtk_sip_svc.h> > + > +/* > + * SiP commands > + */ > +#define MTK_SIP_UFS_CONTROL MTK_SIP_SMC_CMD(0x276) > +#define UFS_MTK_SIP_VA09_PWR_CTRL BIT(0) > +#define UFS_MTK_SIP_DEVICE_RESET BIT(1) > +#define UFS_MTK_SIP_CRYPTO_CTRL BIT(2) > +#define UFS_MTK_SIP_REF_CLK_NOTIFICATION BIT(3) > +#define UFS_MTK_SIP_HOST_PWR_CTRL BIT(5) > +#define UFS_MTK_SIP_GET_VCC_NUM BIT(6) > +#define UFS_MTK_SIP_DEVICE_PWR_CTRL BIT(7) > + > + > +/* > + * Multi-VCC by Numbering > + */ > +enum ufs_mtk_vcc_num { > + UFS_VCC_NONE = 0, > + UFS_VCC_1, > + UFS_VCC_2, > + UFS_VCC_MAX > +}; > + > +/* > + * Host Power Control options > + */ > +enum { > + HOST_PWR_HCI = 0, > + HOST_PWR_MPHY > +}; > + > +/* > + * 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 inline 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__}) > + > +/* 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, stage, res) \ > + ufs_mtk_smc(UFS_MTK_SIP_REF_CLK_NOTIFICATION, &(res), on, > stage) > + > +#define ufs_mtk_device_reset_ctrl(high, res) \ > + ufs_mtk_smc(UFS_MTK_SIP_DEVICE_RESET, &(res), high) > + > +#define ufs_mtk_host_pwr_ctrl(opt, on, res) \ > + ufs_mtk_smc(UFS_MTK_SIP_HOST_PWR_CTRL, &(res), opt, on) > + > +#define ufs_mtk_get_vcc_num(res) \ > + ufs_mtk_smc(UFS_MTK_SIP_GET_VCC_NUM, &(res)) > + > +#define ufs_mtk_device_pwr_ctrl(on, ufs_version, res) \ > + ufs_mtk_smc(UFS_MTK_SIP_DEVICE_PWR_CTRL, &(res), on, > ufs_version) > + > +#endif /* !_UFS_MEDIATEK_SIP_H */ > diff --git a/drivers/ufs/host/ufs-mediatek.c b/drivers/ufs/host/ufs- > mediatek.c > index cdf29cfa490b..ae184e4f90e6 100644 > --- a/drivers/ufs/host/ufs-mediatek.c > +++ b/drivers/ufs/host/ufs-mediatek.c > @@ -20,13 +20,14 @@ > #include <linux/pm_qos.h> > #include <linux/regulator/consumer.h> > #include <linux/reset.h> > -#include <linux/soc/mediatek/mtk_sip_svc.h> > > #include <ufs/ufshcd.h> > #include "ufshcd-pltfrm.h" > #include <ufs/ufs_quirks.h> > #include <ufs/unipro.h> > + > #include "ufs-mediatek.h" > +#include "ufs-mediatek-sip.h" > > static int ufs_mtk_config_mcq(struct ufs_hba *hba, bool irq); > > diff --git a/drivers/ufs/host/ufs-mediatek.h b/drivers/ufs/host/ufs- > mediatek.h > index 79c64de25254..17be3f748fa0 100644 > --- a/drivers/ufs/host/ufs-mediatek.h > +++ b/drivers/ufs/host/ufs-mediatek.h > @@ -8,7 +8,6 @@ > > #include <linux/bitops.h> > #include <linux/pm_qos.h> > -#include <linux/soc/mediatek/mtk_sip_svc.h> > > /* > * MCQ define and struct > @@ -100,18 +99,6 @@ enum { > VS_HIB_EXIT = 13, > }; > > -/* > - * SiP commands > - */ > -#define MTK_SIP_UFS_CONTROL MTK_SIP_SMC_CMD(0x276) > -#define UFS_MTK_SIP_VA09_PWR_CTRL BIT(0) > -#define UFS_MTK_SIP_DEVICE_RESET BIT(1) > -#define UFS_MTK_SIP_CRYPTO_CTRL BIT(2) > -#define UFS_MTK_SIP_REF_CLK_NOTIFICATION BIT(3) > -#define UFS_MTK_SIP_HOST_PWR_CTRL BIT(5) > -#define UFS_MTK_SIP_GET_VCC_NUM BIT(6) > -#define UFS_MTK_SIP_DEVICE_PWR_CTRL BIT(7) > - > /* > * VS_DEBUGCLOCKENABLE > */ > @@ -197,70 +184,4 @@ struct ufs_mtk_host { > struct ufs_mtk_mcq_intr_info mcq_intr_info[UFSHCD_MAX_Q_NR]; > }; > > -/* > - * Multi-VCC by Numbering > - */ > -enum ufs_mtk_vcc_num { > - UFS_VCC_NONE = 0, > - UFS_VCC_1, > - UFS_VCC_2, > - UFS_VCC_MAX > -}; > - > -/* > - * Host Power Control options > - */ > -enum { > - HOST_PWR_HCI = 0, > - HOST_PWR_MPHY > -}; > - > -/* > - * 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, stage, res) \ > - ufs_mtk_smc(UFS_MTK_SIP_REF_CLK_NOTIFICATION, &(res), on, > stage) > - > -#define ufs_mtk_device_reset_ctrl(high, res) \ > - ufs_mtk_smc(UFS_MTK_SIP_DEVICE_RESET, &(res), high) > - > -#define ufs_mtk_host_pwr_ctrl(opt, on, res) \ > - ufs_mtk_smc(UFS_MTK_SIP_HOST_PWR_CTRL, &(res), opt, on) > - > -#define ufs_mtk_get_vcc_num(res) \ > - ufs_mtk_smc(UFS_MTK_SIP_GET_VCC_NUM, &(res)) > - > -#define ufs_mtk_device_pwr_ctrl(on, ufs_ver, res) \ > - ufs_mtk_smc(UFS_MTK_SIP_DEVICE_PWR_CTRL, &(res), on, ufs_ver) > - > #endif /* !_UFS_MEDIATEK_H */ Acked-by: Chun-Hung Wu <Chun-Hung.Wu@mediatek.com>
On Thu, 2024-03-14 at 19:36 -0700, Bart Van Assche wrote: > > External email : Please do not click links or open attachments until > you have verified the sender or the content. > On 3/7/24 23:02, peter.wang@mediatek.com wrote: > > +/* > > + * SiP commands > > + */ > > An additional comment that explains what "SiP" means would be > welcome. > > Thanks, > > Bart. > Hi Bart, It means Silcon Partner. Will add comment next version. Thanks. Peter
diff --git a/drivers/ufs/host/ufs-mediatek-sip.h b/drivers/ufs/host/ufs-mediatek-sip.h new file mode 100755 index 000000000000..30146bb1ccbe --- /dev/null +++ b/drivers/ufs/host/ufs-mediatek-sip.h @@ -0,0 +1,90 @@ +/* SPDX-License-Identifier: GPL-2.0 */ +/* + * Copyright (C) 2022 MediaTek Inc. + */ + +#ifndef _UFS_MEDIATEK_SIP_H +#define _UFS_MEDIATEK_SIP_H + +#include <linux/soc/mediatek/mtk_sip_svc.h> + +/* + * SiP commands + */ +#define MTK_SIP_UFS_CONTROL MTK_SIP_SMC_CMD(0x276) +#define UFS_MTK_SIP_VA09_PWR_CTRL BIT(0) +#define UFS_MTK_SIP_DEVICE_RESET BIT(1) +#define UFS_MTK_SIP_CRYPTO_CTRL BIT(2) +#define UFS_MTK_SIP_REF_CLK_NOTIFICATION BIT(3) +#define UFS_MTK_SIP_HOST_PWR_CTRL BIT(5) +#define UFS_MTK_SIP_GET_VCC_NUM BIT(6) +#define UFS_MTK_SIP_DEVICE_PWR_CTRL BIT(7) + + +/* + * Multi-VCC by Numbering + */ +enum ufs_mtk_vcc_num { + UFS_VCC_NONE = 0, + UFS_VCC_1, + UFS_VCC_2, + UFS_VCC_MAX +}; + +/* + * Host Power Control options + */ +enum { + HOST_PWR_HCI = 0, + HOST_PWR_MPHY +}; + +/* + * 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 inline 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__}) + +/* 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, stage, res) \ + ufs_mtk_smc(UFS_MTK_SIP_REF_CLK_NOTIFICATION, &(res), on, stage) + +#define ufs_mtk_device_reset_ctrl(high, res) \ + ufs_mtk_smc(UFS_MTK_SIP_DEVICE_RESET, &(res), high) + +#define ufs_mtk_host_pwr_ctrl(opt, on, res) \ + ufs_mtk_smc(UFS_MTK_SIP_HOST_PWR_CTRL, &(res), opt, on) + +#define ufs_mtk_get_vcc_num(res) \ + ufs_mtk_smc(UFS_MTK_SIP_GET_VCC_NUM, &(res)) + +#define ufs_mtk_device_pwr_ctrl(on, ufs_version, res) \ + ufs_mtk_smc(UFS_MTK_SIP_DEVICE_PWR_CTRL, &(res), on, ufs_version) + +#endif /* !_UFS_MEDIATEK_SIP_H */ diff --git a/drivers/ufs/host/ufs-mediatek.c b/drivers/ufs/host/ufs-mediatek.c index cdf29cfa490b..ae184e4f90e6 100644 --- a/drivers/ufs/host/ufs-mediatek.c +++ b/drivers/ufs/host/ufs-mediatek.c @@ -20,13 +20,14 @@ #include <linux/pm_qos.h> #include <linux/regulator/consumer.h> #include <linux/reset.h> -#include <linux/soc/mediatek/mtk_sip_svc.h> #include <ufs/ufshcd.h> #include "ufshcd-pltfrm.h" #include <ufs/ufs_quirks.h> #include <ufs/unipro.h> + #include "ufs-mediatek.h" +#include "ufs-mediatek-sip.h" static int ufs_mtk_config_mcq(struct ufs_hba *hba, bool irq); diff --git a/drivers/ufs/host/ufs-mediatek.h b/drivers/ufs/host/ufs-mediatek.h index 79c64de25254..17be3f748fa0 100644 --- a/drivers/ufs/host/ufs-mediatek.h +++ b/drivers/ufs/host/ufs-mediatek.h @@ -8,7 +8,6 @@ #include <linux/bitops.h> #include <linux/pm_qos.h> -#include <linux/soc/mediatek/mtk_sip_svc.h> /* * MCQ define and struct @@ -100,18 +99,6 @@ enum { VS_HIB_EXIT = 13, }; -/* - * SiP commands - */ -#define MTK_SIP_UFS_CONTROL MTK_SIP_SMC_CMD(0x276) -#define UFS_MTK_SIP_VA09_PWR_CTRL BIT(0) -#define UFS_MTK_SIP_DEVICE_RESET BIT(1) -#define UFS_MTK_SIP_CRYPTO_CTRL BIT(2) -#define UFS_MTK_SIP_REF_CLK_NOTIFICATION BIT(3) -#define UFS_MTK_SIP_HOST_PWR_CTRL BIT(5) -#define UFS_MTK_SIP_GET_VCC_NUM BIT(6) -#define UFS_MTK_SIP_DEVICE_PWR_CTRL BIT(7) - /* * VS_DEBUGCLOCKENABLE */ @@ -197,70 +184,4 @@ struct ufs_mtk_host { struct ufs_mtk_mcq_intr_info mcq_intr_info[UFSHCD_MAX_Q_NR]; }; -/* - * Multi-VCC by Numbering - */ -enum ufs_mtk_vcc_num { - UFS_VCC_NONE = 0, - UFS_VCC_1, - UFS_VCC_2, - UFS_VCC_MAX -}; - -/* - * Host Power Control options - */ -enum { - HOST_PWR_HCI = 0, - HOST_PWR_MPHY -}; - -/* - * 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, stage, res) \ - ufs_mtk_smc(UFS_MTK_SIP_REF_CLK_NOTIFICATION, &(res), on, stage) - -#define ufs_mtk_device_reset_ctrl(high, res) \ - ufs_mtk_smc(UFS_MTK_SIP_DEVICE_RESET, &(res), high) - -#define ufs_mtk_host_pwr_ctrl(opt, on, res) \ - ufs_mtk_smc(UFS_MTK_SIP_HOST_PWR_CTRL, &(res), opt, on) - -#define ufs_mtk_get_vcc_num(res) \ - ufs_mtk_smc(UFS_MTK_SIP_GET_VCC_NUM, &(res)) - -#define ufs_mtk_device_pwr_ctrl(on, ufs_ver, res) \ - ufs_mtk_smc(UFS_MTK_SIP_DEVICE_PWR_CTRL, &(res), on, ufs_ver) - #endif /* !_UFS_MEDIATEK_H */