mirror of
https://github.com/torvalds/linux.git
synced 2024-12-03 17:41:22 +00:00
c8790cb6da
Platform drivers need make a lot of resource state requests at the same time, say, at the start or end of an usecase. It can be quite inefficient to send each request separately. Instead they can give the RPMH library a batch of requests to be sent and wait on the whole transaction to be complete. rpmh_write_batch() is a blocking call that can be used to send multiple RPMH command sets. Each RPMH command set is set asynchronously and the API blocks until all the command sets are complete and receive their tx_done callbacks. Signed-off-by: Lina Iyer <ilina@codeaurora.org> Signed-off-by: Raju P.L.S.S.S.N <rplsssn@codeaurora.org> Reviewed-by: Matthias Kaehlcke <mka@chromium.org> Signed-off-by: Andy Gross <andy.gross@linaro.org>
52 lines
1.3 KiB
C
52 lines
1.3 KiB
C
/* SPDX-License-Identifier: GPL-2.0 */
|
|
/*
|
|
* Copyright (c) 2016-2018, The Linux Foundation. All rights reserved.
|
|
*/
|
|
|
|
#ifndef __SOC_QCOM_RPMH_H__
|
|
#define __SOC_QCOM_RPMH_H__
|
|
|
|
#include <soc/qcom/tcs.h>
|
|
#include <linux/platform_device.h>
|
|
|
|
|
|
#if IS_ENABLED(CONFIG_QCOM_RPMH)
|
|
int rpmh_write(const struct device *dev, enum rpmh_state state,
|
|
const struct tcs_cmd *cmd, u32 n);
|
|
|
|
int rpmh_write_async(const struct device *dev, enum rpmh_state state,
|
|
const struct tcs_cmd *cmd, u32 n);
|
|
|
|
int rpmh_write_batch(const struct device *dev, enum rpmh_state state,
|
|
const struct tcs_cmd *cmd, u32 *n);
|
|
|
|
int rpmh_flush(const struct device *dev);
|
|
|
|
int rpmh_invalidate(const struct device *dev);
|
|
|
|
#else
|
|
|
|
static inline int rpmh_write(const struct device *dev, enum rpmh_state state,
|
|
const struct tcs_cmd *cmd, u32 n)
|
|
{ return -ENODEV; }
|
|
|
|
static inline int rpmh_write_async(const struct device *dev,
|
|
enum rpmh_state state,
|
|
const struct tcs_cmd *cmd, u32 n)
|
|
{ return -ENODEV; }
|
|
|
|
static inline int rpmh_write_batch(const struct device *dev,
|
|
enum rpmh_state state,
|
|
const struct tcs_cmd *cmd, u32 *n)
|
|
{ return -ENODEV; }
|
|
|
|
static inline int rpmh_flush(const struct device *dev)
|
|
{ return -ENODEV; }
|
|
|
|
static inline int rpmh_invalidate(const struct device *dev)
|
|
{ return -ENODEV; }
|
|
|
|
#endif /* CONFIG_QCOM_RPMH */
|
|
|
|
#endif /* __SOC_QCOM_RPMH_H__ */
|