61 lines · c
1/* SPDX-License-Identifier: GPL-2.0-only */2/*3 * Utility functions for parsing Tegra CVB voltage tables4 */5 6#ifndef __DRIVERS_CLK_TEGRA_CVB_H7#define __DRIVERS_CLK_TEGRA_CVB_H8 9#include <linux/types.h>10 11struct device;12 13#define MAX_DVFS_FREQS 4014 15struct rail_alignment {16 int offset_uv;17 int step_uv;18};19 20struct cvb_coefficients {21 int c0;22 int c1;23 int c2;24};25 26struct cvb_table_freq_entry {27 unsigned long freq;28 struct cvb_coefficients coefficients;29};30 31struct cvb_cpu_dfll_data {32 u32 tune0_low;33 u32 tune0_high;34 u32 tune1;35 unsigned int tune_high_min_millivolts;36};37 38struct cvb_table {39 int speedo_id;40 int process_id;41 42 int min_millivolts;43 int max_millivolts;44 45 int speedo_scale;46 int voltage_scale;47 struct cvb_table_freq_entry entries[MAX_DVFS_FREQS];48 struct cvb_cpu_dfll_data cpu_dfll_data;49};50 51const struct cvb_table *52tegra_cvb_add_opp_table(struct device *dev, const struct cvb_table *cvb_tables,53 size_t count, struct rail_alignment *align,54 int process_id, int speedo_id, int speedo_value,55 unsigned long max_freq);56void tegra_cvb_remove_opp_table(struct device *dev,57 const struct cvb_table *table,58 unsigned long max_freq);59 60#endif61