Exemplo n.º 1
0
char *set_gpu_fan(char *arg)
{
	int i, val1 = 0, val2 = 0, device = 0;
	char *nextptr;

	nextptr = strtok(arg, ",");
	if (nextptr == NULL)
		return "Invalid parameters for set gpu fan";
	get_intrange(nextptr, &val1, &val2);
	if (val1 < 0 || val1 > 100 || val2 < 0 || val2 > 100)
		return "Invalid value passed to set_gpu_fan";

	gpus[device].min_fan = val1;
	gpus[device].gpu_fan = val2;
	device++;

	while ((nextptr = strtok(NULL, ",")) != NULL) {
		get_intrange(nextptr, &val1, &val2);
		if (val1 < 0 || val1 > 100 || val2 < 0 || val2 > 100)
			return "Invalid value passed to set_gpu_fan";

		gpus[device].min_fan = val1;
		gpus[device].gpu_fan = val2;
		device++;
	}

	if (device == 1) {
		for (i = 1; i < MAX_GPUDEVICES; i++) {
			gpus[i].min_fan = gpus[0].min_fan;
			gpus[i].gpu_fan = gpus[0].gpu_fan;
		}
	}

	return NULL;
}
Exemplo n.º 2
0
char *set_gpu_engine(const char *_arg)
{
  int i, val1 = 0, val2 = 0, device = 0;
  char *nextptr;
  char *arg = (char *)alloca(strlen(_arg) + 1);
  strcpy(arg, _arg);

  if(!(nextptr = strtok(arg, ",")))
    return "Invalid parameters for set gpu engine";

  do {
    get_intrange(nextptr, &val1, &val2);
    if (val1 < 0 || val1 > 9999 || val2 < 0 || val2 > 9999)
      return "Invalid value passed to set_gpu_engine";

    gpus[device].min_engine = val1;
    gpus[device].gpu_engine = val2;

    //also set adl settings otherwise range will never properly be applied
    //since min_engine/gpu_engine are only called during init_adl() at startup
    gpus[device].adl.minspeed = val1 * 100;
    gpus[device].adl.maxspeed = val2 * 100;

    device++;
  } while ((nextptr = strtok(NULL, ",")) != NULL);

  //if only 1 range passed, apply to all gpus
  if (device == 1) {
    for (i = 1; i < MAX_GPUDEVICES; i++) {
      gpus[i].min_engine = gpus[0].min_engine;
      gpus[i].gpu_engine = gpus[0].gpu_engine;

      //set adl values
      gpus[i].adl.minspeed = val1 * 100;
      gpus[i].adl.maxspeed = val2 * 100;
    }
  }

  return NULL;
}