volt.h 785 B

1234567891011121314151617181920212223242526272829303132333435363738
  1. /* SPDX-License-Identifier: GPL-2.0 */
  2. #ifndef __NVBIOS_VOLT_H__
  3. #define __NVBIOS_VOLT_H__
  4. enum nvbios_volt_type {
  5. NVBIOS_VOLT_GPIO = 0,
  6. NVBIOS_VOLT_PWM,
  7. };
  8. struct nvbios_volt {
  9. enum nvbios_volt_type type;
  10. u32 min;
  11. u32 max;
  12. u32 base;
  13. /* GPIO mode */
  14. bool ranged;
  15. u8 vidmask;
  16. s16 step;
  17. /* PWM mode */
  18. u32 pwm_freq;
  19. u32 pwm_range;
  20. };
  21. u32 nvbios_volt_table(struct nvkm_bios *, u8 *ver, u8 *hdr, u8 *cnt, u8 *len);
  22. u32 nvbios_volt_parse(struct nvkm_bios *, u8 *ver, u8 *hdr, u8 *cnt, u8 *len,
  23. struct nvbios_volt *);
  24. struct nvbios_volt_entry {
  25. u32 voltage;
  26. u8 vid;
  27. };
  28. u32 nvbios_volt_entry(struct nvkm_bios *, int idx, u8 *ver, u8 *len);
  29. u32 nvbios_volt_entry_parse(struct nvkm_bios *, int idx, u8 *ver, u8 *len,
  30. struct nvbios_volt_entry *);
  31. #endif