int
nvkm_gpio_set(struct nvkm_gpio *gpio, int idx, u8 tag, u8 line, int state)
{ struct dcb_gpio_func func; int ret;
ret = nvkm_gpio_find(gpio, idx, tag, line, &func); if (ret == 0) { int dir = !!(func.log[state] & 0x02); int out = !!(func.log[state] & 0x01);
ret = nvkm_gpio_drive(gpio, idx, func.line, dir, out);
}
return ret;
}
int
nvkm_gpio_get(struct nvkm_gpio *gpio, int idx, u8 tag, u8 line)
{ struct dcb_gpio_func func; int ret;
ret = nvkm_gpio_find(gpio, idx, tag, line, &func); if (ret == 0) {
ret = nvkm_gpio_sense(gpio, idx, func.line); if (ret >= 0)
ret = (ret == (func.log[1] & 1));
}
staticint
nvkm_gpio_init(struct nvkm_subdev *subdev)
{ struct nvkm_gpio *gpio = nvkm_gpio(subdev); struct dcb_gpio_func func; int ret; int i;
if (dmi_check_system(gpio_reset_ids))
nvkm_gpio_reset(gpio, DCB_GPIO_UNUSED);
if (nvkm_boolopt(subdev->device->cfgopt, "NvPowerChecks", true)) { for (i = 0; i < ARRAY_SIZE(power_checks); ++i) {
ret = nvkm_gpio_find(gpio, 0, power_checks[i],
DCB_GPIO_UNUSED, &func); if (ret) continue;
ret = nvkm_gpio_get(gpio, 0, func.func, func.line); if (!ret) continue;
nvkm_error(&gpio->subdev, "GPU is missing power, check its power " "cables. Boot with " "nouveau.config=NvPowerChecks=0 to " "disable.\n"); return -EINVAL;
}
}
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.