1*84369fbeSSuman Anna /* SPDX-License-Identifier: GPL-2.0 */ 2835764ddSBjorn Andersson /* 3835764ddSBjorn Andersson * Copyright (c) 2016-2017, Linaro Ltd 4835764ddSBjorn Andersson */ 5835764ddSBjorn Andersson 6835764ddSBjorn Andersson #ifndef __QCOM_GLINK_NATIVE_H__ 7835764ddSBjorn Andersson #define __QCOM_GLINK_NATIVE_H__ 8835764ddSBjorn Andersson 9d31ad615SSricharan R #define GLINK_FEATURE_INTENT_REUSE BIT(0) 10d31ad615SSricharan R #define GLINK_FEATURE_MIGRATION BIT(1) 11d31ad615SSricharan R #define GLINK_FEATURE_TRACER_PKT BIT(2) 12d31ad615SSricharan R 13835764ddSBjorn Andersson struct qcom_glink_pipe { 14835764ddSBjorn Andersson size_t length; 15835764ddSBjorn Andersson 16835764ddSBjorn Andersson size_t (*avail)(struct qcom_glink_pipe *glink_pipe); 17835764ddSBjorn Andersson 18835764ddSBjorn Andersson void (*peak)(struct qcom_glink_pipe *glink_pipe, void *data, 19b88eee97SBjorn Andersson unsigned int offset, size_t count); 20835764ddSBjorn Andersson void (*advance)(struct qcom_glink_pipe *glink_pipe, size_t count); 21835764ddSBjorn Andersson 22835764ddSBjorn Andersson void (*write)(struct qcom_glink_pipe *glink_pipe, 23835764ddSBjorn Andersson const void *hdr, size_t hlen, 24835764ddSBjorn Andersson const void *data, size_t dlen); 25835764ddSBjorn Andersson }; 26835764ddSBjorn Andersson 27835764ddSBjorn Andersson struct qcom_glink; 28835764ddSBjorn Andersson 29835764ddSBjorn Andersson struct qcom_glink *qcom_glink_native_probe(struct device *dev, 30d31ad615SSricharan R unsigned long features, 31835764ddSBjorn Andersson struct qcom_glink_pipe *rx, 32933b45daSSricharan R struct qcom_glink_pipe *tx, 33933b45daSSricharan R bool intentless); 34835764ddSBjorn Andersson void qcom_glink_native_remove(struct qcom_glink *glink); 35835764ddSBjorn Andersson 36caf989c3SBjorn Andersson void qcom_glink_native_unregister(struct qcom_glink *glink); 37835764ddSBjorn Andersson #endif 38