STRUCT EXYNOS_TMU_DATA(9)
π NAME π
okay so bestie, welcome to struct exynos_tmu_data β the manual page for it lives under the Kernel API Manual, and this whole thing is literally just a structure to hold the private data of the TMU driver. that's it, that's the vibe π
β¨ SYNOPSIS β¨
like, here's the whole glow-up, copied exactly so you can't mess it up:
struct exynos_tmu_data {
void __iomem *base;
void __iomem *base_second;
int irq;
enum soc_type soc;
struct mutex lock;
struct clk *clk, *clk_sec, *sclk;
u32 cal_type;
u32 efuse_value;
u32 min_efuse_value;
u32 max_efuse_value;
u16 temp_error1, temp_error2;
u8 gain;
u8 reference_voltage;
struct thermal_zone_device *tzd;
bool enabled;
void (*tmu_set_low_temp)(struct exynos_tmu_data *data, u8 temp);
void (*tmu_set_high_temp)(struct exynos_tmu_data *data, u8 temp);
void (*tmu_set_crit_temp)(struct exynos_tmu_data *data, u8 temp);
void (*tmu_disable_low)(struct exynos_tmu_data *data);
void (*tmu_disable_high)(struct exynos_tmu_data *data);
void (*tmu_initialize)(struct platform_device *pdev);
void (*tmu_control)(struct platform_device *pdev, bool on);
int (*tmu_read)(struct exynos_tmu_data *data);
void (*tmu_set_emulation)(struct exynos_tmu_data *data, int temp);
void (*tmu_clear_irqs)(struct exynos_tmu_data *data);
};
π Members π
okay this is the part where we go member by member, no skipping, we are NOT leaving anyone out π«Ά
baseβ base address of the single instance of the TMU controller β¨base_secondβ base address of the common registers of the TMU controllerirqβ irq number of the TMU controller, iconic honestlysocβ id of the SOC typelockβ lock to implement synchronization π (please respect the lock, bestie)clkβ pointer to the clock structureclk_secβ pointer to the clock structure for accessing thebase_secondsclkβ pointer to the clock structure for accessing the tmu special clkcal_typeβ calibration type for temperatureefuse_valueβ SoC defined fuse valuemin_efuse_valueβ minimum valid trimming datamax_efuse_valueβ maximum valid trimming datatemp_error1β fused value of the first point trim.temp_error2β fused value of the second point trim.gainβ gain of amplifier in the positive-TC generator block, and the rules are0 < gain <= 15πreference_voltageβ reference voltage of amplifier in the positive-TC generator block, and again,0 < reference_voltage <= 31β‘tzdβ pointer to thermal_zone_device structureenabledβ current status of TMU devicetmu_set_low_tempβ SoC specific method to set trip (falling threshold) π‘οΈtmu_set_high_tempβ SoC specific method to set trip (rising threshold) π₯tmu_set_crit_tempβ SoC specific method to set critical temperature πtmu_disable_lowβ SoC specific method to disable an interrupt (falling threshold)tmu_disable_highβ SoC specific method to disable an interrupt (rising threshold)tmu_initializeβ SoC specific TMU initialization methodtmu_controlβ SoC specific TMU control methodtmu_readβ SoC specific TMU temperature read methodtmu_set_emulationβ SoC specific TMU emulation setting methodtmu_clear_irqsβ SoC specific TMU interrupts clearing method
lowkey a whole army of function pointers in there β every one of them is SoC specific, fr fr. don't go thinking one size fits all π
π SEE ALSO π
- Kernel file
./drivers/thermal/samsung/exynos_tmu.cβ go read it, iykyk π
and that's the whole page bestie! this was the struct exynos_tmu_data(9) moment, brought to you by the fine folks at ./drivers/thermal/samsung, dated October 2026 β mwah, slay, periodt ππ¦πΈ
π¦ 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