^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1) /* SPDX-License-Identifier: GPL-2.0 */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3) * Copyright (c) 2016-2017, Linaro Ltd
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 6) #ifndef __QCOM_GLINK_NATIVE_H__
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 7) #define __QCOM_GLINK_NATIVE_H__
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 8)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 9) #define GLINK_FEATURE_INTENT_REUSE BIT(0)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 10) #define GLINK_FEATURE_MIGRATION BIT(1)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 11) #define GLINK_FEATURE_TRACER_PKT BIT(2)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 12)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 13) struct qcom_glink_pipe {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 14) size_t length;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 15)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 16) size_t (*avail)(struct qcom_glink_pipe *glink_pipe);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 17)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 18) void (*peak)(struct qcom_glink_pipe *glink_pipe, void *data,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 19) unsigned int offset, size_t count);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 20) void (*advance)(struct qcom_glink_pipe *glink_pipe, size_t count);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 21)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 22) void (*write)(struct qcom_glink_pipe *glink_pipe,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 23) const void *hdr, size_t hlen,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 24) const void *data, size_t dlen);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 25) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 26)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 27) struct qcom_glink;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 28)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 29) struct qcom_glink *qcom_glink_native_probe(struct device *dev,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 30) unsigned long features,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 31) struct qcom_glink_pipe *rx,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 32) struct qcom_glink_pipe *tx,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 33) bool intentless);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 34) void qcom_glink_native_remove(struct qcom_glink *glink);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 35)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 36) void qcom_glink_native_unregister(struct qcom_glink *glink);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 37) #endif