drivers/clk/bcm/clk-iproc.h
Source file repositories/reference/linux-study-clean/drivers/clk/bcm/clk-iproc.h
File Facts
- System
- Linux kernel
- Corpus path
drivers/clk/bcm/clk-iproc.h- Extension
.h- Size
- 5071 bytes
- Lines
- 215
- Domain
- Driver Families
- Bucket
- drivers/clk
- Inferred role
- Driver Families: implementation source
- Status
- source implementation candidate
Why This File Exists
Repeatable hardware-adapter layer. Deep compatibility for every driver is out of scope; this atlas records patterns, probe lifecycles, bus glue, IRQ/DMA usage, and links back to core abstractions.
- Repeatable hardware-adapter layer. Deep compatibility for every driver is out of scope; this atlas records patterns, probe lifecycles, bus glue, IRQ/DMA usage, and links back to core abstractions.
- Defines or uses C structs; map object ownership, embedded links, reference counts, and lock ownership.
Dependency Surface
linux/kernel.hlinux/list.hlinux/spinlock.hlinux/slab.hlinux/device.hlinux/of.hlinux/clk-provider.h
Detected Declarations
struct iproc_pll_vco_paramstruct iproc_clk_reg_opstruct iproc_asiu_gatestruct iproc_pll_aon_pwr_ctrlstruct iproc_pll_reset_ctrlstruct iproc_pll_dig_filter_ctrlstruct iproc_pll_sw_ctrlstruct iproc_pll_vco_ctrlstruct iproc_pll_ctrlstruct iproc_clk_enable_ctrlstruct iproc_clk_ctrlstruct iproc_asiu_div
Annotated Snippet
struct iproc_pll_vco_param {
unsigned long rate;
unsigned int ndiv_int;
unsigned int ndiv_frac;
unsigned int pdiv;
};
struct iproc_clk_reg_op {
unsigned int offset;
unsigned int shift;
unsigned int width;
};
/*
* Clock gating control at the top ASIU level
*/
struct iproc_asiu_gate {
unsigned int offset;
unsigned int en_shift;
};
/*
* Control of powering on/off of a PLL
*
* Before powering off a PLL, input isolation (ISO) needs to be enabled
*/
struct iproc_pll_aon_pwr_ctrl {
unsigned int offset;
unsigned int pwr_width;
unsigned int pwr_shift;
unsigned int iso_shift;
};
/*
* Control of the PLL reset
*/
struct iproc_pll_reset_ctrl {
unsigned int offset;
unsigned int reset_shift;
unsigned int p_reset_shift;
};
/*
* Control of the Ki, Kp, and Ka parameters
*/
struct iproc_pll_dig_filter_ctrl {
unsigned int offset;
unsigned int ki_shift;
unsigned int ki_width;
unsigned int kp_shift;
unsigned int kp_width;
unsigned int ka_shift;
unsigned int ka_width;
};
/*
* To enable SW control of the PLL
*/
struct iproc_pll_sw_ctrl {
unsigned int offset;
unsigned int shift;
};
struct iproc_pll_vco_ctrl {
unsigned int u_offset;
unsigned int l_offset;
};
/*
* Main PLL control parameters
*/
struct iproc_pll_ctrl {
unsigned long flags;
struct iproc_pll_aon_pwr_ctrl aon;
struct iproc_asiu_gate asiu;
struct iproc_pll_reset_ctrl reset;
struct iproc_pll_dig_filter_ctrl dig_filter;
struct iproc_pll_sw_ctrl sw_ctrl;
struct iproc_clk_reg_op ndiv_int;
struct iproc_clk_reg_op ndiv_frac;
struct iproc_clk_reg_op pdiv;
struct iproc_pll_vco_ctrl vco_ctrl;
struct iproc_clk_reg_op status;
struct iproc_clk_reg_op macro_mode;
};
/*
* Controls enabling/disabling a PLL derived clock
*/
struct iproc_clk_enable_ctrl {
Annotation
- Immediate include surface: `linux/kernel.h`, `linux/list.h`, `linux/spinlock.h`, `linux/slab.h`, `linux/device.h`, `linux/of.h`, `linux/clk-provider.h`.
- Detected declarations: `struct iproc_pll_vco_param`, `struct iproc_clk_reg_op`, `struct iproc_asiu_gate`, `struct iproc_pll_aon_pwr_ctrl`, `struct iproc_pll_reset_ctrl`, `struct iproc_pll_dig_filter_ctrl`, `struct iproc_pll_sw_ctrl`, `struct iproc_pll_vco_ctrl`, `struct iproc_pll_ctrl`, `struct iproc_clk_enable_ctrl`.
- Atlas domain: Driver Families / drivers/clk.
- 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.