root/drivers/clk/tegra/cvb.h

/* [<][>][^][v][top][bottom][index][help] */

INCLUDED FROM


   1 /* SPDX-License-Identifier: GPL-2.0-only */
   2 /*
   3  * Utility functions for parsing Tegra CVB voltage tables
   4  */
   5 
   6 #ifndef __DRIVERS_CLK_TEGRA_CVB_H
   7 #define __DRIVERS_CLK_TEGRA_CVB_H
   8 
   9 #include <linux/types.h>
  10 
  11 struct device;
  12 
  13 #define MAX_DVFS_FREQS  40
  14 
  15 struct rail_alignment {
  16         int offset_uv;
  17         int step_uv;
  18 };
  19 
  20 struct cvb_coefficients {
  21         int c0;
  22         int c1;
  23         int c2;
  24 };
  25 
  26 struct cvb_table_freq_entry {
  27         unsigned long freq;
  28         struct cvb_coefficients coefficients;
  29 };
  30 
  31 struct cvb_cpu_dfll_data {
  32         u32 tune0_low;
  33         u32 tune0_high;
  34         u32 tune1;
  35         unsigned int tune_high_min_millivolts;
  36 };
  37 
  38 struct 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 
  51 const struct cvb_table *
  52 tegra_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);
  56 void tegra_cvb_remove_opp_table(struct device *dev,
  57                                 const struct cvb_table *table,
  58                                 unsigned long max_freq);
  59 
  60 #endif

/* [<][>][^][v][top][bottom][index][help] */