123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869 |
- /*
- * Utility functions for parsing Tegra CVB voltage tables
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License version 2 as
- * published by the Free Software Foundation.
- *
- * This program is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
- * more details.
- *
- */
- #ifndef __DRIVERS_CLK_TEGRA_CVB_H
- #define __DRIVERS_CLK_TEGRA_CVB_H
- #include <linux/types.h>
- struct device;
- #define MAX_DVFS_FREQS 40
- struct rail_alignment {
- int offset_uv;
- int step_uv;
- };
- struct cvb_coefficients {
- int c0;
- int c1;
- int c2;
- };
- struct cvb_table_freq_entry {
- unsigned long freq;
- struct cvb_coefficients coefficients;
- };
- struct cvb_cpu_dfll_data {
- u32 tune0_low;
- u32 tune0_high;
- u32 tune1;
- };
- struct cvb_table {
- int speedo_id;
- int process_id;
- int min_millivolts;
- int max_millivolts;
- struct rail_alignment alignment;
- int speedo_scale;
- int voltage_scale;
- struct cvb_table_freq_entry entries[MAX_DVFS_FREQS];
- struct cvb_cpu_dfll_data cpu_dfll_data;
- };
- const struct cvb_table *
- tegra_cvb_add_opp_table(struct device *dev, const struct cvb_table *cvb_tables,
- size_t count, int process_id, int speedo_id,
- int speedo_value, unsigned long max_freq);
- void tegra_cvb_remove_opp_table(struct device *dev,
- const struct cvb_table *table,
- unsigned long max_freq);
- #endif
|