exynos5_dmc_...req_and_volt(9)
π exynos5_dmc_change_freq_and_volt(9) π
okay bestie, so this is a page from the Kernel API Manual, section 9 β it's the one about exynos5_dmc_change_freq_and_volt, and yes the header abbreviates it as exynos5_dmc_...req_and_volt(9) because apparently even kernel devs run out of screen width π. Anyway. Sit down, hydrate, let's go π«Ά
β¨ NAME β¨
exynos5_dmc_change_freq_and_volt β changes the voltage and the frequency of the DMC, and does it using the safe procedure (the whole point, no cap π₯)
β¨ SYNOPSIS β¨
int exynos5_dmc_change_freq_and_volt (struct exynos5_dmc *dmc , unsigned
long target_rate , unsigned long target_volt );
πΈ ARGUMENTS πΈ
dmcβ the device whose frequency is about to get a whole new vibe. this is the thing we're changing πtarget_rateβ the requested new frequency, aka the glow-up destination β¨target_voltβ the requested voltage that corresponds to that new frequency. they're a matching set, iykyk π
π¦ DESCRIPTION π¦
okay so the DMC frequency change procedure takes a few steps, it's giving "getting ready" montage π
the main requirement is: you've gotta change the clock source in the clk mux for the time when the main clock PLL is locking. and the assumption here β the thing we're just trusting β is that the alternative clock source set as parent is stable. π§
that second parent's clock frequency is fixed at 400MHz, and it's named the 'bypass' clock. iconic name, honestly π
this requires alignment in the DRAM timing parameters for the new T-period. and there are, in fact, two bank sets for keeping DRAM timings: set 0 and set 1.
- set 0 is used when the main clock source is chosen
- the 2nd set of regs is used for the
'bypass'clock
switching between the two bank sets is part of the process. like, literally built in β¨
the voltage must also be aligned to the minimum required level. and there's this intermediate step where we switch to the 'bypass' parent clock source. > if the old voltage is lower, it requires an increase of the voltage level. so like, heads up β that's a real thing that has to happen β οΈ
the complexity of the voltage manipulation is hidden in a low level function (not our problem, bestie π). and in this function there's a last alignment of the voltage level at the end. last step, final touch, periodt π
π SEE ALSO π
- Kernel file
./drivers/memory/samsung/exynos5422-dmc.c struct dmc_opp_table(9)struct exynos5_dmc(9)find_target_freq_idx(9)exynos5_switch_timing_regs(9)exynos5_init_freq_table(9)exynos5_set_bypass_dram_timings(9)exynos5_dram_change_timings(9)exynos5_dmc_align_target_voltage(9)exynos5_dmc_align_bypass_voltage(9)exynos5_dmc_align_bypass_dram_timings(9)exynos5_dmc_switch_to_bypass_configuration(9)exynos5_dmc_get_volt_freq(9)exynos5_dmc_target(9)exynos5_counters_get(9)exynos5_dmc_start_perf_events(9)exynos5_dmc_perf_events_calc(9)exynos5_dmc_perf_events_check(9)exynos5_dmc_enable_perf_events(9)exynos5_dmc_disable_perf_events(9)exynos5_dmc_get_status(9)exynos5_dmc_get_cur_freq(9)exynos5_dmc_align_init_freq(9)create_timings_aligned(9)of_get_dram_timings(9)exynos5_dmc_init_clks(9)exynos5_performance_counters_init(9)exynos5_dmc_set_pause_on_switching(9)exynos5_dmc_probe(9)exynos5_dmc_remove(9)
and that's the whole page, bestie, you ate that π this little beauty lives over in ./drivers/memory/samsung and it's dated October 2026, with the manual title being exynos5_dmc_...req_and_volt(9) β go forth and change those frequencies safely πβ¨π
π¦ 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