Linux kernel mirror (for testing)
git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel
os
linux
1/* SPDX-License-Identifier: GPL-2.0 */
2
3/* Copyright (c) 2012-2018, The Linux Foundation. All rights reserved.
4 * Copyright (C) 2018-2020 Linaro Ltd.
5 */
6#ifndef _IPA_CLOCK_H_
7#define _IPA_CLOCK_H_
8
9struct device;
10
11struct ipa;
12
13/**
14 * ipa_clock_init() - Initialize IPA clocking
15 * @dev: IPA device
16 *
17 * @Return: A pointer to an ipa_clock structure, or a pointer-coded error
18 */
19struct ipa_clock *ipa_clock_init(struct device *dev);
20
21/**
22 * ipa_clock_exit() - Inverse of ipa_clock_init()
23 * @clock: IPA clock pointer
24 */
25void ipa_clock_exit(struct ipa_clock *clock);
26
27/**
28 * ipa_clock_get() - Get an IPA clock reference
29 * @ipa: IPA pointer
30 *
31 * This call blocks if this is the first reference.
32 */
33void ipa_clock_get(struct ipa *ipa);
34
35/**
36 * ipa_clock_get_additional() - Get an IPA clock reference if not first
37 * @ipa: IPA pointer
38 *
39 * This returns immediately, and only takes a reference if not the first
40 */
41bool ipa_clock_get_additional(struct ipa *ipa);
42
43/**
44 * ipa_clock_put() - Drop an IPA clock reference
45 * @ipa: IPA pointer
46 *
47 * This drops a clock reference. If the last reference is being dropped,
48 * the clock is stopped and RX endpoints are suspended. This call will
49 * not block unless the last reference is dropped.
50 */
51void ipa_clock_put(struct ipa *ipa);
52
53#endif /* _IPA_CLOCK_H_ */