STRUCT INGENIC_CGU_PLL_INFO(9)
hii bestie!! welcome to struct ingenic_cgu_pll_info(9) in the Kernel API Manual β this is the little struct that holds information about a PLL, and we're gonna read it like a group-chat receipt πβ¨
β¨ NAME β¨
struct ingenic_cgu_pll_info β information about a PLL. That's the name line, and honestly it ate: it's literally the struct for PLL info, periodt π
π¦ SYNOPSIS π¦
here's the struct in all its glory, copied exactly because we do NOT mess with code, bestie:
struct ingenic_cgu_pll_info {
unsigned reg;
unsigned rate_multiplier;
const s8 *od_encoding;
u8 m_shift, m_bits, m_offset;
u8 n_shift, n_bits, n_offset;
u8 od_shift, od_bits, od_max;
unsigned bypass_reg;
s8 bypass_bit;
s8 enable_bit;
s8 stable_bit;
void (*calc_m_n_od)(const struct ingenic_cgu_pll_info *pll_info,
unsigned long rate, unsigned long parent_rate, unsigned int *m, unsigned
int *n, unsigned int *od);
void (*set_rate_hook)(const struct ingenic_cgu_pll_info *pll_info,
unsigned long rate, unsigned long parent_rate);
};
quick note, bestie: calc_m_n_od is right there in the struct, but the original Members section doesn't give it a separate description β so I'm not inventing one π
π Members π
okay bestie, member-by-member, no gatekeeping:
regβ the offset of the PLL's control register within the CGUrate_multiplierβ the multiplier needed by PLL rate calculationod_encodingβ a pointer to an array mapping post-VCO divider values to their encoded values in the PLL control register, or-1for unsupported valuesm_shiftβ the number of bits to shift the multiplier value by (ie. the index of the lowest bit of the multiplier value in the PLL's control register)m_bitsβ the size of the multiplier field in bitsm_offsetβ the multiplier value which encodes to0in the PLL's control registern_shiftβ the number of bits to shift the divider value by (ie. the index of the lowest bit of the divider value in the PLL's control register)n_bitsβ the size of the divider field in bitsn_offsetβ the divider value which encodes to0in the PLL's control registerod_shiftβ the number of bits to shift the post-VCO divider value by (ie. the index of the lowest bit of the post-VCO divider value in the PLL's control register)od_bitsβ the size of the post-VCO divider field in bits, or0if no OD field exists (then the OD is fixed to1)od_maxβ the maximum post-VCO divider valuebypass_regβ the offset of the bypass control register within the CGUbypass_bitβ the index of the bypass bit in the PLL control register, or-1if there is no bypass bitenable_bitβ the index of the enable bit in the PLL control register, or-1if there is no enable bit (ie, the PLL is always on)stable_bitβ the index of the stable bit in the PLL control register, or-1if there is no stable bitset_rate_hookβ hook called immediately after updating the CGU register, before releasing the spinlock
π SEE ALSO π
peep the kernel file ./drivers/clk/ingenic/cgu.h, and then these icons too:
struct ingenic_cgu_mux_info(9)struct ingenic_cgu_div_info(9)struct ingenic_cgu_fixdiv_info(9)struct ingenic_cgu_gate_info(9)struct ingenic_cgu_custom_info(9)struct ingenic_cgu_clk_info(9)struct ingenic_cgu(9)struct ingenic_clk(9)ingenic_cgu_new(9)ingenic_cgu_register_clocks(9)
okay that's the page, bestie!! mwah π source/version: ./drivers/clk/ingenic; date: October 2026; manual name: struct ingenic_cgu_pll_info(9). bye, go make your PLL info cute β¨π«Ά
π¦ where this page comes from
- nixpkgs unstable: linux-manual 7.3.1
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash-1017 on : a language model's rewrite of the original, under its terms