1 #ifndef __NVKM_VOLT_H__ 2 #define __NVKM_VOLT_H__ 3 #include <core/subdev.h> 4 5 struct nvkm_volt { 6 const struct nvkm_volt_func *func; 7 struct nvkm_subdev subdev; 8 9 u8 vid_mask; 10 u8 vid_nr; 11 struct { 12 u32 uv; 13 u8 vid; 14 } vid[256]; 15 16 u32 max_uv; 17 u32 min_uv; 18 19 /* 20 * These are fully functional map entries creating a sw ceiling for 21 * the voltage. These all can describe different kind of curves, so 22 * that for any given temperature a different one can return the lowest 23 * value of all three. 24 */ 25 u8 max0_id; 26 u8 max1_id; 27 u8 max2_id; 28 }; 29 30 int nvkm_volt_map(struct nvkm_volt *volt, u8 id, u8 temperature); 31 int nvkm_volt_map_min(struct nvkm_volt *volt, u8 id); 32 int nvkm_volt_get(struct nvkm_volt *); 33 int nvkm_volt_set_id(struct nvkm_volt *, u8 id, u8 min_id, u8 temp, 34 int condition); 35 36 int nv40_volt_new(struct nvkm_device *, int, struct nvkm_volt **); 37 int gf100_volt_new(struct nvkm_device *, int, struct nvkm_volt **); 38 int gk104_volt_new(struct nvkm_device *, int, struct nvkm_volt **); 39 int gk20a_volt_new(struct nvkm_device *, int, struct nvkm_volt **); 40 int gm20b_volt_new(struct nvkm_device *, int, struct nvkm_volt **); 41 #endif 42