STRUCT EXYNOS5_DMC(9)
π struct exynos5_dmc(9) π
okay so bestie, welcome to the Kernel API Manual page for struct exynos5_dmc β the main character struct that describes the whole DMC device β¨ no cap, she's kind of a big deal.
π NAME π
struct exynos5_dmc β the main structure describing the DMC device. that's it, that's the vibe π
πΈ SYNOPSIS πΈ
here's the whole glow-up, copy-pasted with love (and zero edits, promise):
struct exynos5_dmc {
struct device *dev;
struct devfreq *df;
struct devfreq_simple_ondemand_data gov_data;
void __iomem *base_drexi0;
void __iomem *base_drexi1;
struct regmap *clk_regmap;
struct mutex lock;
unsigned long curr_rate;
unsigned long curr_volt;
struct dmc_opp_table *opp;
int opp_count;
u32 timings_arr_size;
u32 *timing_row;
u32 *timing_data;
u32 *timing_power;
const struct lpddr3_timings *timings;
const struct lpddr3_min_tck *min_tck;
u32 bypass_timing_row;
u32 bypass_timing_data;
u32 bypass_timing_power;
struct regulator *vdd_mif;
struct clk *fout_spll;
struct clk *fout_bpll;
struct clk *mout_spll;
struct clk *mout_bpll;
struct clk *mout_mclk_cdrex;
struct clk *mout_mx_mspll_ccore;
struct devfreq_event_dev **counter;
int num_counters;
u64 last_overflow_ts[2];
unsigned long load;
unsigned long total;
bool in_irq_mode;
};
π¦ Members π¦
like, every field, explained. no member left behind fr fr π«Ά
devβ the DMC device itself πdfβ the devfreq device structure, handed back to you by the devfreq frameworkgov_dataβ the configuration for the devfreq governorbase_drexi0β DREX0 registers mappingbase_drexi1β DREX1 registers mappingclk_regmapβ the regmap for the clock controller registerslockβ protectscurr_rateand the frequency/voltage setting section π (do not skip the lock, bestie, i'm begging)curr_rateβ current frequencycurr_voltβ current voltageoppβ the OPP tableopp_countβ number ofoppelementstimings_arr_sizeβ number oftimingselementstiming_rowβ values for the timing row register, for each OPPtiming_dataβ values for the timing data register, for each OPPtiming_powerβ values for the timing power register, for each OPP (the original page spells it "balues" and honestly? she's valid, we stan anyway π)timingsβ DDR memory timings, straight from the device tree π³min_tckβ DDR memory minimum timing values, also from the device treebypass_timing_rowβ value for the timing row register for bypass timingsbypass_timing_dataβ value for the timing data register for bypass timingsbypass_timing_powerβ value for the timing power register for bypass timingsvdd_mifβ the Memory interface regulatorfout_spllβ clock: SPLLfout_bpllβ clock: BPLLmout_spllβ clock: mux SPLLmout_bpllβ clock: mux BPLLmout_mclk_cdrexβ clock: mux mclk_cdrexmout_mx_mspll_ccoreβ clock: mux mx_mspll_ccorecounterβ devfreq eventsnum_countersβ number ofcounterelementslast_overflow_tsβ time (in ns) of the last overflow of each DREX β±οΈloadβ utilization in percentstotalβ total time between devfreq eventsin_irq_modeβ whether she's running in interrupt mode (true) or polling (false) π₯
β Description β
so this is the main structure for the Dynamic Memory Controller, and she covers literally everything: clocks, memory regions, HW information, parameters, and the current operating mode. the whole package. main character energy, periodt π
π SEE ALSO π
go read these next, bestie, they all live in the Kernel file ./drivers/memory/samsung/exynos5422-dmc.c:
struct dmc_opp_table(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_change_freq_and_volt(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)
aaaand that's the page!! π mwah π this diva comes to you from ./drivers/memory/samsung, dated October 2026 β go off, queen, see you in the next manpage π¦β¨
π¦ 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