include/soc/tegra/bpmp.h
Source file repositories/reference/linux-study-clean/include/soc/tegra/bpmp.h
File Facts
- System
- Linux kernel
- Corpus path
include/soc/tegra/bpmp.h- Extension
.h- Size
- 5274 bytes
- Lines
- 238
- 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.
- Uses kernel synchronization; read lock ordering, sleepability, and interrupt context assumptions before translating.
- Defines or uses C structs; map object ownership, embedded links, reference counts, and lock ownership.
Dependency Surface
linux/iosys-map.hlinux/mailbox_client.hlinux/pm_domain.hlinux/reset-controller.hlinux/semaphore.hlinux/types.hsoc/tegra/bpmp-abi.h
Detected Declarations
struct tegra_bpmp_clkstruct tegra_bpmp_opsstruct tegra_bpmp_socstruct tegra_bpmp_mb_datastruct tegra_bpmp_channelstruct tegra_bpmp_mrqstruct tegra_bpmpstruct tegra_bpmp_messagefunction tegra_bpmp_putfunction tegra_bpmp_transferfunction tegra_bpmp_mrq_returnfunction tegra_bpmp_free_mrqfunction tegra_bpmp_init_clocksfunction tegra_bpmp_init_resetsfunction tegra_bpmp_init_powergatesfunction tegra_bpmp_init_debugfs
Annotated Snippet
struct tegra_bpmp_soc {
struct {
struct {
unsigned int offset;
unsigned int count;
unsigned int timeout;
} cpu_tx, thread, cpu_rx;
} channels;
const struct tegra_bpmp_ops *ops;
unsigned int num_resets;
};
struct tegra_bpmp_mb_data {
u32 code;
u32 flags;
u8 data[MSG_DATA_MIN_SZ];
} __packed;
#define tegra_bpmp_mb_read(dst, mb, size) \
iosys_map_memcpy_from(dst, mb, offsetof(struct tegra_bpmp_mb_data, data), size)
#define tegra_bpmp_mb_write(mb, src, size) \
iosys_map_memcpy_to(mb, offsetof(struct tegra_bpmp_mb_data, data), src, size)
#define tegra_bpmp_mb_read_field(mb, field) \
iosys_map_rd_field(mb, 0, struct tegra_bpmp_mb_data, field)
#define tegra_bpmp_mb_write_field(mb, field, value) \
iosys_map_wr_field(mb, 0, struct tegra_bpmp_mb_data, field, value)
struct tegra_bpmp_channel {
struct tegra_bpmp *bpmp;
struct iosys_map ib;
struct iosys_map ob;
struct completion completion;
struct tegra_ivc *ivc;
unsigned int index;
};
typedef void (*tegra_bpmp_mrq_handler_t)(unsigned int mrq,
struct tegra_bpmp_channel *channel,
void *data);
struct tegra_bpmp_mrq {
struct list_head list;
unsigned int mrq;
tegra_bpmp_mrq_handler_t handler;
void *data;
};
struct tegra_bpmp {
const struct tegra_bpmp_soc *soc;
struct device *dev;
void *priv;
struct {
struct mbox_client client;
struct mbox_chan *channel;
} mbox;
spinlock_t atomic_tx_lock;
struct tegra_bpmp_channel *tx_channel, *rx_channel, *threaded_channels;
struct {
unsigned long *allocated;
unsigned long *busy;
unsigned int count;
struct semaphore lock;
} threaded;
struct list_head mrqs;
spinlock_t lock;
struct tegra_bpmp_clk **clocks;
unsigned int num_clocks;
struct reset_controller_dev rstc;
struct genpd_onecell_data genpd;
#ifdef CONFIG_DEBUG_FS
struct dentry *debugfs_mirror;
#endif
bool suspended;
};
#define TEGRA_BPMP_MESSAGE_RESET BIT(0)
Annotation
- Immediate include surface: `linux/iosys-map.h`, `linux/mailbox_client.h`, `linux/pm_domain.h`, `linux/reset-controller.h`, `linux/semaphore.h`, `linux/types.h`, `soc/tegra/bpmp-abi.h`.
- Detected declarations: `struct tegra_bpmp_clk`, `struct tegra_bpmp_ops`, `struct tegra_bpmp_soc`, `struct tegra_bpmp_mb_data`, `struct tegra_bpmp_channel`, `struct tegra_bpmp_mrq`, `struct tegra_bpmp`, `struct tegra_bpmp_message`, `function tegra_bpmp_put`, `function tegra_bpmp_transfer`.
- Atlas domain: Repository Root And Misc / include.
- Implementation status: source implementation candidate.
- Synchronization appears in or near this file; preserve lock ordering, sleepability, and interrupt-context constraints.
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.