cachepc-linux

Fork of AMDESE/linux with modifications for CachePC side-channel attack
git clone https://git.sinitax.com/sinitax/cachepc-linux
Log | Files | Refs | README | LICENSE | sfeed.txt

cvb.h (1163B)


      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
     11struct device;
     12
     13#define MAX_DVFS_FREQS	40
     14
     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#endif