1 | /* SPDX-License-Identifier: GPL-2.0 */ |
2 | |
3 | /* Copyright (c) 2012-2018, The Linux Foundation. All rights reserved. |
4 | * Copyright (C) 2019-2022 Linaro Ltd. |
5 | */ |
6 | #ifndef _IPA_TABLE_H_ |
7 | #define _IPA_TABLE_H_ |
8 | |
9 | #include <linux/types.h> |
10 | |
11 | struct ipa; |
12 | |
13 | /** |
14 | * ipa_filtered_valid() - Validate a filter table endpoint bitmap |
15 | * @ipa: IPA pointer |
16 | * @filtered: Filter table endpoint bitmap to check |
17 | * |
18 | * Return: true if all regions are valid, false otherwise |
19 | */ |
20 | bool ipa_filtered_valid(struct ipa *ipa, u64 filtered); |
21 | |
22 | /** |
23 | * ipa_table_hash_support() - Return true if hashed tables are supported |
24 | * @ipa: IPA pointer |
25 | */ |
26 | static inline bool ipa_table_hash_support(struct ipa *ipa) |
27 | { |
28 | return ipa->version != IPA_VERSION_4_2; |
29 | } |
30 | |
31 | /** |
32 | * ipa_table_reset() - Reset filter and route tables entries to "none" |
33 | * @ipa: IPA pointer |
34 | * @modem: Whether to reset modem or AP entries |
35 | */ |
36 | void ipa_table_reset(struct ipa *ipa, bool modem); |
37 | |
38 | /** |
39 | * ipa_table_hash_flush() - Synchronize hashed filter and route updates |
40 | * @ipa: IPA pointer |
41 | */ |
42 | int ipa_table_hash_flush(struct ipa *ipa); |
43 | |
44 | /** |
45 | * ipa_table_setup() - Set up filter and route tables |
46 | * @ipa: IPA pointer |
47 | * |
48 | * There is no need for a matching ipa_table_teardown() function. |
49 | */ |
50 | int ipa_table_setup(struct ipa *ipa); |
51 | |
52 | /** |
53 | * ipa_table_config() - Configure filter and route tables |
54 | * @ipa: IPA pointer |
55 | * |
56 | * There is no need for a matching ipa_table_deconfig() function. |
57 | */ |
58 | void ipa_table_config(struct ipa *ipa); |
59 | |
60 | /** |
61 | * ipa_table_init() - Do early initialization of filter and route tables |
62 | * @ipa: IPA pointer |
63 | */ |
64 | int ipa_table_init(struct ipa *ipa); |
65 | |
66 | /** |
67 | * ipa_table_exit() - Inverse of ipa_table_init() |
68 | * @ipa: IPA pointer |
69 | */ |
70 | void ipa_table_exit(struct ipa *ipa); |
71 | |
72 | /** |
73 | * ipa_table_mem_valid() - Validate sizes of table memory regions |
74 | * @ipa: IPA pointer |
75 | * @filter: Whether to check filter or routing tables |
76 | */ |
77 | bool ipa_table_mem_valid(struct ipa *ipa, bool filter); |
78 | |
79 | #endif /* _IPA_TABLE_H_ */ |
80 | |