Skip to content
Navigation Menu
Toggle navigation
Sign in
In this repository
All GitHub Enterprise
↵
Jump to
↵
No suggested jump to results
In this repository
All GitHub Enterprise
↵
Jump to
↵
In this organization
All GitHub Enterprise
↵
Jump to
↵
In this repository
All GitHub Enterprise
↵
Jump to
↵
Sign in
Reseting focus
You signed in with another tab or window.
Reload
to refresh your session.
You signed out in another tab or window.
Reload
to refresh your session.
You switched accounts on another tab or window.
Reload
to refresh your session.
Dismiss alert
{{ message }}
mariux64
/
linux
Public
Notifications
You must be signed in to change notification settings
Fork
0
Star
0
Code
Issues
1
Pull requests
0
Actions
Projects
0
Wiki
Security
Insights
Additional navigation options
Code
Issues
Pull requests
Actions
Projects
Wiki
Security
Insights
Files
06f0798
Documentation
LICENSES
arch
block
certs
crypto
drivers
fs
include
acpi
asm-generic
clocksource
crypto
drm
dt-bindings
keys
kunit
kvm
linux
math-emu
media
memory
misc
net
pcmcia
ras
rdma
scsi
soc
arc
at91
bcm2835
brcmstb
fsl
imx
mediatek
mscc
nps
qcom
rockchip
sa1100
sifive
tegra
ahb.h
bpmp-abi.h
bpmp.h
common.h
cpuidle.h
emc.h
flowctrl.h
fuse.h
irq.h
ivc.h
mc.h
pm.h
pmc.h
sound
target
trace
uapi
vdso
video
xen
init
ipc
kernel
lib
mm
net
samples
scripts
security
sound
tools
usr
virt
.clang-format
.cocciconfig
.get_maintainer.ignore
.gitattributes
.gitignore
.mailmap
COPYING
CREDITS
Kbuild
Kconfig
MAINTAINERS
Makefile
README
Breadcrumbs
linux
/
include
/
soc
/
tegra
/
mc.h
Copy path
Blame
Blame
Latest commit
History
History
214 lines (170 loc) · 4.48 KB
Breadcrumbs
linux
/
include
/
soc
/
tegra
/
mc.h
Top
File metadata and controls
Code
Blame
214 lines (170 loc) · 4.48 KB
Raw
/* SPDX-License-Identifier: GPL-2.0-only */ /* * Copyright (C) 2014 NVIDIA Corporation */ #ifndef __SOC_TEGRA_MC_H__ #define __SOC_TEGRA_MC_H__ #include <linux/bits.h> #include <linux/err.h> #include <linux/interconnect-provider.h> #include <linux/reset-controller.h> #include <linux/types.h> struct clk; struct device; struct page; struct tegra_smmu_enable { unsigned int reg; unsigned int bit; }; struct tegra_mc_timing { unsigned long rate; u32 *emem_data; }; /* latency allowance */ struct tegra_mc_la { unsigned int reg; unsigned int shift; unsigned int mask; unsigned int def; }; struct tegra_mc_client { unsigned int id; const char *name; unsigned int swgroup; unsigned int fifo_size; struct tegra_smmu_enable smmu; struct tegra_mc_la la; }; struct tegra_smmu_swgroup { const char *name; unsigned int swgroup; unsigned int reg; }; struct tegra_smmu_group_soc { const char *name; const unsigned int *swgroups; unsigned int num_swgroups; }; struct tegra_smmu_soc { const struct tegra_mc_client *clients; unsigned int num_clients; const struct tegra_smmu_swgroup *swgroups; unsigned int num_swgroups; const struct tegra_smmu_group_soc *groups; unsigned int num_groups; bool supports_round_robin_arbitration; bool supports_request_limit; unsigned int num_tlb_lines; unsigned int num_asids; }; struct tegra_mc; struct tegra_smmu; struct gart_device; #ifdef CONFIG_TEGRA_IOMMU_SMMU struct tegra_smmu *tegra_smmu_probe(struct device *dev, const struct tegra_smmu_soc *soc, struct tegra_mc *mc); void tegra_smmu_remove(struct tegra_smmu *smmu); #else static inline struct tegra_smmu * tegra_smmu_probe(struct device *dev, const struct tegra_smmu_soc *soc, struct tegra_mc *mc) { return NULL; } static inline void tegra_smmu_remove(struct tegra_smmu *smmu) { } #endif #ifdef CONFIG_TEGRA_IOMMU_GART struct gart_device *tegra_gart_probe(struct device *dev, struct tegra_mc *mc); int tegra_gart_suspend(struct gart_device *gart); int tegra_gart_resume(struct gart_device *gart); #else static inline struct gart_device * tegra_gart_probe(struct device *dev, struct tegra_mc *mc) { return ERR_PTR(-ENODEV); } static inline int tegra_gart_suspend(struct gart_device *gart) { return -ENODEV; } static inline int tegra_gart_resume(struct gart_device *gart) { return -ENODEV; } #endif struct tegra_mc_reset { const char *name; unsigned long id; unsigned int control; unsigned int status; unsigned int reset; unsigned int bit; }; struct tegra_mc_reset_ops { int (*hotreset_assert)(struct tegra_mc *mc, const struct tegra_mc_reset *rst); int (*hotreset_deassert)(struct tegra_mc *mc, const struct tegra_mc_reset *rst); int (*block_dma)(struct tegra_mc *mc, const struct tegra_mc_reset *rst); bool (*dma_idling)(struct tegra_mc *mc, const struct tegra_mc_reset *rst); int (*unblock_dma)(struct tegra_mc *mc, const struct tegra_mc_reset *rst); int (*reset_status)(struct tegra_mc *mc, const struct tegra_mc_reset *rst); }; #define TEGRA_MC_ICC_TAG_DEFAULT 0 #define TEGRA_MC_ICC_TAG_ISO BIT(0) struct tegra_mc_icc_ops { int (*set)(struct icc_node *src, struct icc_node *dst); int (*aggregate)(struct icc_node *node, u32 tag, u32 avg_bw, u32 peak_bw, u32 *agg_avg, u32 *agg_peak); struct icc_node_data *(*xlate_extended)(struct of_phandle_args *spec, void *data); }; struct tegra_mc_soc { const struct tegra_mc_client *clients; unsigned int num_clients; const unsigned long *emem_regs; unsigned int num_emem_regs; unsigned int num_address_bits; unsigned int atom_size; u8 client_id_mask; const struct tegra_smmu_soc *smmu; u32 intmask; const struct tegra_mc_reset_ops *reset_ops; const struct tegra_mc_reset *resets; unsigned int num_resets; const struct tegra_mc_icc_ops *icc_ops; }; struct tegra_mc { struct device *dev; struct tegra_smmu *smmu; struct gart_device *gart; void __iomem *regs; struct clk *clk; int irq; const struct tegra_mc_soc *soc; unsigned long tick; struct tegra_mc_timing *timings; unsigned int num_timings; struct reset_controller_dev reset; struct icc_provider provider; spinlock_t lock; }; int tegra_mc_write_emem_configuration(struct tegra_mc *mc, unsigned long rate); unsigned int tegra_mc_get_emem_device_count(struct tegra_mc *mc); #ifdef CONFIG_TEGRA_MC struct tegra_mc *devm_tegra_memory_controller_get(struct device *dev); #else static inline struct tegra_mc * devm_tegra_memory_controller_get(struct device *dev) { ERR_PTR(-ENODEV); } #endif #endif /* __SOC_TEGRA_MC_H__ */
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
You can’t perform that action at this time.