Commit d78b5bde authored by Timo Alho's avatar Timo Alho Committed by Thierry Reding
Browse files

firmware: tegra: Add helper to check for supported MRQs



Add a helper function to check that firmware is supporting a given MRQ
command.

Signed-off-by: default avatarTimo Alho <talho@nvidia.com>
Acked-by: default avatarSivaram Nair <sivaramn@nvidia.com>
Acked-by: default avatarJon Hunter <jonathanh@nvidia.com>
Signed-off-by: default avatarThierry Reding <treding@nvidia.com>
parent 65102238
Loading
Loading
Loading
Loading
+25 −0
Original line number Diff line number Diff line
@@ -470,6 +470,31 @@ unlock:
}
EXPORT_SYMBOL_GPL(tegra_bpmp_free_mrq);

bool tegra_bpmp_mrq_is_supported(struct tegra_bpmp *bpmp, unsigned int mrq)
{
	struct mrq_query_abi_request req = { .mrq = cpu_to_le32(mrq) };
	struct mrq_query_abi_response resp;
	struct tegra_bpmp_message msg = {
		.mrq = MRQ_QUERY_ABI,
		.tx = {
			.data = &req,
			.size = sizeof(req),
		},
		.rx = {
			.data = &resp,
			.size = sizeof(resp),
		},
	};
	int ret;

	ret = tegra_bpmp_transfer(bpmp, &msg);
	if (ret || msg.rx.ret)
		return false;

	return resp.status == 0;
}
EXPORT_SYMBOL_GPL(tegra_bpmp_mrq_is_supported);

static void tegra_bpmp_mrq_handle_ping(unsigned int mrq,
				       struct tegra_bpmp_channel *channel,
				       void *data)
+7 −0
Original line number Diff line number Diff line
@@ -129,6 +129,7 @@ int tegra_bpmp_request_mrq(struct tegra_bpmp *bpmp, unsigned int mrq,
			   tegra_bpmp_mrq_handler_t handler, void *data);
void tegra_bpmp_free_mrq(struct tegra_bpmp *bpmp, unsigned int mrq,
			 void *data);
bool tegra_bpmp_mrq_is_supported(struct tegra_bpmp *bpmp, unsigned int mrq);
#else
static inline struct tegra_bpmp *tegra_bpmp_get(struct device *dev)
{
@@ -164,6 +165,12 @@ static inline void tegra_bpmp_free_mrq(struct tegra_bpmp *bpmp,
				       unsigned int mrq, void *data)
{
}

static inline bool tegra_bpmp_mrq_is_supported(struct tegra_bpmp *bpmp,
					      unsigned int mrq)
{
	return false;
}
#endif

#if IS_ENABLED(CONFIG_CLK_TEGRA_BPMP)