1 /* $NetBSD: volt.h,v 1.3 2021/12/18 23:45:33 riastradh Exp $ */ 2 3 /* SPDX-License-Identifier: MIT */ 4 #ifndef __NVBIOS_VOLT_H__ 5 #define __NVBIOS_VOLT_H__ 6 7 enum nvbios_volt_type { 8 NVBIOS_VOLT_GPIO = 0, 9 NVBIOS_VOLT_PWM, 10 }; 11 12 struct nvbios_volt { 13 enum nvbios_volt_type type; 14 u32 min; 15 u32 max; 16 u32 base; 17 18 /* GPIO mode */ 19 bool ranged; 20 u8 vidmask; 21 s16 step; 22 23 /* PWM mode */ 24 u32 pwm_freq; 25 u32 pwm_range; 26 }; 27 28 u32 nvbios_volt_table(struct nvkm_bios *, u8 *ver, u8 *hdr, u8 *cnt, u8 *len); 29 u32 nvbios_volt_parse(struct nvkm_bios *, u8 *ver, u8 *hdr, u8 *cnt, u8 *len, 30 struct nvbios_volt *); 31 32 struct nvbios_volt_entry { 33 u32 voltage; 34 u8 vid; 35 }; 36 37 u32 nvbios_volt_entry(struct nvkm_bios *, int idx, u8 *ver, u8 *len); 38 u32 nvbios_volt_entry_parse(struct nvkm_bios *, int idx, u8 *ver, u8 *len, 39 struct nvbios_volt_entry *); 40 #endif 41