int
nvkm_voltgpio_get(struct nvkm_volt *volt)
{ struct nvkm_gpio *gpio = volt->subdev.device->gpio;
u8 vid = 0; int i;
for (i = 0; i < ARRAY_SIZE(tags); i++) { if (volt->vid_mask & (1 << i)) { int ret = nvkm_gpio_get(gpio, 0, tags[i], 0xff); if (ret < 0) return ret;
vid |= ret << i;
}
}
return vid;
}
int
nvkm_voltgpio_set(struct nvkm_volt *volt, u8 vid)
{ struct nvkm_gpio *gpio = volt->subdev.device->gpio; int i;
for (i = 0; i < ARRAY_SIZE(tags); i++, vid >>= 1) { if (volt->vid_mask & (1 << i)) { int ret = nvkm_gpio_set(gpio, 0, tags[i], 0xff, vid & 1); if (ret < 0) return ret;
}
}
return0;
}
int
nvkm_voltgpio_init(struct nvkm_volt *volt)
{ struct nvkm_subdev *subdev = &volt->subdev; struct nvkm_gpio *gpio = subdev->device->gpio; struct dcb_gpio_func func; int i;
/* check we have gpio function info for each vid bit. on some *boards(ie.nvs295)thevidmaskhasmorebitsthanthere *arevalidgpiofunctions...fromtraces,nvidiaappearto *justtouchtheexistingones,solet'smaskofftheinvalid *bitsandcontinuewithlife
*/ for (i = 0; i < ARRAY_SIZE(tags); i++) { if (volt->vid_mask & (1 << i)) { int ret = nvkm_gpio_find(gpio, 0, tags[i], 0xff, &func); if (ret) { if (ret != -ENOENT) return ret;
nvkm_debug(subdev, "VID bit %d has no GPIO\n", i);
volt->vid_mask &= ~(1 << i);
}
}
}
return0;
}
Messung V0.5 in Prozent
¤ Dauer der Verarbeitung: 0.9 Sekunden
(vorverarbeitet am 2026-10-06)
¤
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.