arch/arm/mach-omap2/omap_hwmod.h
Source file repositories/reference/linux-study-clean/arch/arm/mach-omap2/omap_hwmod.h
File Facts
- System
- Linux kernel
- Corpus path
arch/arm/mach-omap2/omap_hwmod.h- Extension
.h- Size
- 25990 bytes
- Lines
- 675
- Domain
- Architecture Layer
- Bucket
- arch/arm
- Inferred role
- Architecture Layer: implementation source
- Status
- source implementation candidate
Why This File Exists
CPU and platform-specific kernel glue: boot entry, traps, syscall entry, interrupts, page tables, context switch, and low-level barriers.
- CPU and platform-specific kernel glue: boot entry, traps, syscall entry, interrupts, page tables, context switch, and low-level barriers.
- Defines or uses C structs; map object ownership, embedded links, reference counts, and lock ownership.
Dependency Surface
linux/kernel.hlinux/init.hlinux/list.hlinux/ioport.hlinux/spinlock.h
Detected Declarations
struct omap_devicestruct omap_hwmod_rst_infostruct omap_hwmod_opt_clkstruct omap_hwmod_omap2_firewallstruct omap_hwmod_ocp_ifstruct omap_hwmod_class_sysconfigstruct omap_hwmod_omap2_prcmstruct omap_hwmod_omap4_prcmstruct omap_hwmod_classstruct omap_hwmodstruct device_nodestruct ti_sysc_module_datastruct ti_sysc_cookiefunction omap_hwmod_for_each_by_class
Annotated Snippet
struct omap_hwmod_rst_info {
const char *name;
u8 rst_shift;
u8 st_shift;
};
/**
* struct omap_hwmod_opt_clk - optional clocks used by this hwmod
* @role: "sys", "32k", "tv", etc -- for use in clk_get()
* @clk: opt clock: OMAP clock name
* @_clk: pointer to the struct clk (filled in at runtime)
*
* The module's interface clock and main functional clock should not
* be added as optional clocks.
*/
struct omap_hwmod_opt_clk {
const char *role;
const char *clk;
struct clk *_clk;
};
/* omap_hwmod_omap2_firewall.flags bits */
#define OMAP_FIREWALL_L3 (1 << 0)
#define OMAP_FIREWALL_L4 (1 << 1)
/**
* struct omap_hwmod_omap2_firewall - OMAP2/3 device firewall data
* @l3_perm_bit: bit shift for L3_PM_*_PERMISSION_*
* @l4_fw_region: L4 firewall region ID
* @l4_prot_group: L4 protection group ID
* @flags: (see omap_hwmod_omap2_firewall.flags macros above)
*/
struct omap_hwmod_omap2_firewall {
u8 l3_perm_bit;
u8 l4_fw_region;
u8 l4_prot_group;
u8 flags;
};
/*
* omap_hwmod_ocp_if.user bits: these indicate the initiators that use this
* interface to interact with the hwmod. Used to add sleep dependencies
* when the module is enabled or disabled.
*/
#define OCP_USER_MPU (1 << 0)
#define OCP_USER_SDMA (1 << 1)
#define OCP_USER_DSP (1 << 2)
#define OCP_USER_IVA (1 << 3)
/* omap_hwmod_ocp_if.flags bits */
#define OCPIF_SWSUP_IDLE (1 << 0)
#define OCPIF_CAN_BURST (1 << 1)
/* omap_hwmod_ocp_if._int_flags possibilities */
#define _OCPIF_INT_FLAGS_REGISTERED (1 << 0)
/**
* struct omap_hwmod_ocp_if - OCP interface data
* @master: struct omap_hwmod that initiates OCP transactions on this link
* @slave: struct omap_hwmod that responds to OCP transactions on this link
* @addr: address space associated with this link
* @clk: interface clock: OMAP clock name
* @_clk: pointer to the interface struct clk (filled in at runtime)
* @fw: interface firewall data
* @width: OCP data width
* @user: initiators using this interface (see OCP_USER_* macros above)
* @flags: OCP interface flags (see OCPIF_* macros above)
* @_int_flags: internal flags (see _OCPIF_INT_FLAGS* macros above)
*
* It may also be useful to add a tag_cnt field for OCP2.x devices.
*
* Parameter names beginning with an underscore are managed internally by
* the omap_hwmod code and should not be set during initialization.
*/
struct omap_hwmod_ocp_if {
struct omap_hwmod *master;
struct omap_hwmod *slave;
struct omap_hwmod_addr_space *addr;
const char *clk;
struct clk *_clk;
struct list_head node;
union {
struct omap_hwmod_omap2_firewall omap2;
} fw;
u8 width;
u8 user;
u8 flags;
u8 _int_flags;
Annotation
- Immediate include surface: `linux/kernel.h`, `linux/init.h`, `linux/list.h`, `linux/ioport.h`, `linux/spinlock.h`.
- Detected declarations: `struct omap_device`, `struct omap_hwmod_rst_info`, `struct omap_hwmod_opt_clk`, `struct omap_hwmod_omap2_firewall`, `struct omap_hwmod_ocp_if`, `struct omap_hwmod_class_sysconfig`, `struct omap_hwmod_omap2_prcm`, `struct omap_hwmod_omap4_prcm`, `struct omap_hwmod_class`, `struct omap_hwmod`.
- Atlas domain: Architecture Layer / arch/arm.
- 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.