drivers/video/fbdev/via/via_clock.h

Source file repositories/reference/linux-study-clean/drivers/video/fbdev/via/via_clock.h

File Facts

System
Linux kernel
Corpus path
drivers/video/fbdev/via/via_clock.h
Extension
.h
Size
1525 bytes
Lines
62
Domain
Driver Families
Bucket
drivers/video
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.

Dependency Surface

Detected Declarations

Annotated Snippet

struct via_pll_config {
	u16 multiplier;
	u8 divisor;
	u8 rshift;
};

struct via_clock {
	void (*set_primary_clock_state)(u8 state);
	void (*set_primary_clock_source)(enum via_clksrc src, bool use_pll);
	void (*set_primary_pll_state)(u8 state);
	void (*set_primary_pll)(struct via_pll_config config);

	void (*set_secondary_clock_state)(u8 state);
	void (*set_secondary_clock_source)(enum via_clksrc src, bool use_pll);
	void (*set_secondary_pll_state)(u8 state);
	void (*set_secondary_pll)(struct via_pll_config config);

	void (*set_engine_pll_state)(u8 state);
	void (*set_engine_pll)(struct via_pll_config config);
};


static inline u32 get_pll_internal_frequency(u32 ref_freq,
	struct via_pll_config pll)
{
	return ref_freq / pll.divisor * pll.multiplier;
}

static inline u32 get_pll_output_frequency(u32 ref_freq,
	struct via_pll_config pll)
{
	return get_pll_internal_frequency(ref_freq, pll) >> pll.rshift;
}

void via_clock_init(struct via_clock *clock, int gfx_chip);

#endif /* __VIA_CLOCK_H__ */

Annotation

Implementation Notes