Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 44992a2d authored by Siddharth Gupta's avatar Siddharth Gupta Committed by Elliot Berman
Browse files

soc: qcom: Migrate SCM calls in jtagv8



Adding API to upstream driver to get JTAG ETM feat id.
Migrating SCM calls used in the JTAG driver.

Change-Id: I60cd57d5c6aae62ec089e960b55ac221f0474f64
Signed-off-by: default avatarSiddharth Gupta <sidgup@codeaurora.org>
Signed-off-by: default avatarElliot Berman <eberman@codeaurora.org>
parent 5d6607bb
Loading
Loading
Loading
Loading
+20 −0
Original line number Diff line number Diff line
@@ -870,6 +870,26 @@ int __qcom_scm_is_call_available(struct device *dev, u32 svc_id, u32 cmd_id)
	return ret ? : desc.res[0];
}

int __qcom_scm_get_feat_version(struct device *dev, u64 feat_id, u64 *version)
{
	int ret;
	struct qcom_scm_desc desc = {
		.svc = QCOM_SCM_SVC_INFO,
		.cmd = QCOM_SCM_INFO_GET_FEAT_VERSION_CMD,
		.owner = ARM_SMCCC_OWNER_SIP
	};

	desc.args[0] = feat_id;
	desc.arginfo = QCOM_SCM_ARGS(1);

	ret = qcom_scm_call(dev, &desc);

	if (version)
		*version = desc.res[0];

	return ret;
}

void __qcom_scm_mmu_sync(struct device *dev, bool sync)
{
	int ret;
+7 −0
Original line number Diff line number Diff line
@@ -334,6 +334,13 @@ int qcom_scm_io_writel(phys_addr_t addr, unsigned int val)
}
EXPORT_SYMBOL(qcom_scm_io_writel);

int qcom_scm_get_jtag_etm_feat_id(u64 *version)
{
	return __qcom_scm_get_feat_version(__scm ? __scm->dev : NULL,
					QCOM_SCM_TZ_DBG_ETM_FEAT_ID, version);
}
EXPORT_SYMBOL(qcom_scm_get_jtag_etm_feat_id);

void qcom_scm_mmu_sync(bool sync)
{
	__qcom_scm_mmu_sync(__scm ? __scm->dev : NULL, sync);
+4 −0
Original line number Diff line number Diff line
@@ -45,8 +45,12 @@ extern int __qcom_scm_io_writel(struct device *dev, phys_addr_t addr, unsigned i

#define QCOM_SCM_SVC_INFO			0x06
#define QCOM_SCM_INFO_IS_CALL_AVAIL		0x01
#define QCOM_SCM_INFO_GET_FEAT_VERSION_CMD	0x03
extern int __qcom_scm_is_call_available(struct device *dev, u32 svc_id,
		u32 cmd_id);
extern int __qcom_scm_get_feat_version(struct device *dev, u64 feat_id,
					u64 *version);
#define QCOM_SCM_TZ_DBG_ETM_FEAT_ID		0x08

#define QCOM_SCM_SVC_PWR			0x09
#define QCOM_SCM_PWR_MMU_SYNC			0x08
+3 −0
Original line number Diff line number Diff line
@@ -49,6 +49,7 @@ extern int qcom_scm_pas_auth_and_reset(u32 peripheral);
extern int qcom_scm_pas_shutdown(u32 peripheral);
extern int qcom_scm_io_readl(phys_addr_t addr, unsigned int *val);
extern int qcom_scm_io_writel(phys_addr_t addr, unsigned int val);
extern int qcom_scm_get_jtag_etm_feat_id(u64 *version);
extern void qcom_scm_mmu_sync(bool sync);
extern int qcom_scm_restore_sec_cfg(u32 device_id, u32 spare);
extern int qcom_scm_iommu_secure_ptbl_size(u32 spare, size_t *size);
@@ -94,6 +95,8 @@ static inline int qcom_scm_io_readl(phys_addr_t addr, unsigned int *val)
		{ return -ENODEV; }
static inline int qcom_scm_io_writel(phys_addr_t addr, unsigned int val)
		{ return -ENODEV; }
static inline int qcom_scm_get_jtag_etm_feat_id(u64 *version)
		{ return -ENODEV; }
static inline void qcom_scm_mmu_sync(bool sync) {}
static inline int qcom_scm_restore_sec_cfg(u32 device_id, u32 spare)
		{ return -ENODEV; }