include/soc/tegra/mc.h
Source file repositories/reference/linux-study-clean/include/soc/tegra/mc.h
File Facts
- System
- Linux kernel
- Corpus path
include/soc/tegra/mc.h- Extension
.h- Size
- 6844 bytes
- Lines
- 290
- Domain
- Repository Root And Misc
- Bucket
- include
- Inferred role
- Repository Root And Misc: implementation source
- Status
- source implementation candidate
Why This File Exists
Top-level or miscellaneous repository surface. Use this as map coverage unless a later manual pass promotes the file into a deeper subsystem dossier.
- Top-level or miscellaneous repository surface. Use this as map coverage unless a later manual pass promotes the file into a deeper subsystem dossier.
- Defines or uses C structs; map object ownership, embedded links, reference counts, and lock ownership.
Dependency Surface
linux/bits.hlinux/debugfs.hlinux/err.hlinux/interconnect-provider.hlinux/interrupt.hlinux/irq.hlinux/reset-controller.hlinux/tegra-icc.hlinux/types.h
Detected Declarations
struct clkstruct devicestruct pagestruct tegra_mc_timingstruct tegra_mc_clientstruct tegra_smmu_swgroupstruct tegra_smmu_group_socstruct tegra_smmu_socstruct tegra_mcstruct tegra_smmustruct tegra_mc_resetstruct tegra_mc_reset_opsstruct tegra_mc_icc_opsstruct tegra_mc_opsstruct tegra_mc_regsstruct tegra_mc_intmaskstruct tegra_mc_socstruct tegra_mcfunction tegra_smmu_probefunction tegra_smmu_removefunction devm_tegra_memory_controller_getfunction tegra_mc_probe_devicefunction tegra_mc_get_carveout_info
Annotated Snippet
struct tegra_mc_timing {
unsigned long rate;
u32 *emem_data;
};
struct tegra_mc_client {
unsigned int id;
unsigned int bpmp_id;
enum tegra_icc_client_type type;
const char *name;
/*
* For Tegra210 and earlier, this is the SWGROUP ID used for IOVA translations in the
* Tegra SMMU, whereas on Tegra186 and later this is the ID used to override the ARM SMMU
* stream ID used for IOVA translations for the given memory client.
*/
union {
unsigned int swgroup;
unsigned int sid;
};
unsigned int fifo_size;
struct {
/* Tegra SMMU enable (Tegra210 and earlier) */
struct {
unsigned int reg;
unsigned int bit;
} smmu;
/* latency allowance */
struct {
unsigned int reg;
unsigned int shift;
unsigned int mask;
unsigned int def;
} la;
/* stream ID overrides (Tegra186 and later) */
struct {
unsigned int override;
unsigned int security;
} sid;
} regs;
};
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;
#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;
}
Annotation
- Immediate include surface: `linux/bits.h`, `linux/debugfs.h`, `linux/err.h`, `linux/interconnect-provider.h`, `linux/interrupt.h`, `linux/irq.h`, `linux/reset-controller.h`, `linux/tegra-icc.h`.
- Detected declarations: `struct clk`, `struct device`, `struct page`, `struct tegra_mc_timing`, `struct tegra_mc_client`, `struct tegra_smmu_swgroup`, `struct tegra_smmu_group_soc`, `struct tegra_smmu_soc`, `struct tegra_mc`, `struct tegra_smmu`.
- Atlas domain: Repository Root And Misc / include.
- Implementation status: source implementation candidate.
Implementation Notes
- This generated page is the file-by-file coverage layer; curated subsystem chapters should link here when they synthesize a multi-file control flow.
- Core OS pages should be promoted from atlas-only to deep-reviewed when they explain data structures, invariants, locking, lifecycle, and C implementation snippets.
- Driver-family pages are intentionally pattern-oriented unless they are part of the selected PCIe/NVMe representative device path.