Lines Matching refs:fan

116 	struct mlxreg_fan *fan = dev_get_drvdata(dev);
123 tacho = &fan->tacho[channel];
126 err = regmap_read(fan->regmap, tacho->reg, &regval);
136 *val = MLXREG_FAN_GET_RPM(regval, fan->divider,
137 fan->samples);
141 err = regmap_read(fan->regmap, tacho->reg, &regval);
156 err = regmap_read(fan->regmap, fan->pwm.reg, &regval);
179 struct mlxreg_fan *fan = dev_get_drvdata(dev);
188 return regmap_write(fan->regmap, fan->pwm.reg, val);
239 HWMON_CHANNEL_INFO(fan,
279 struct mlxreg_fan *fan = cdev->devdata;
283 err = regmap_read(fan->regmap, fan->pwm.reg, &regval);
285 dev_err(fan->dev, "Failed to query PWM duty\n");
298 struct mlxreg_fan *fan = cdev->devdata;
309 * changed from 4 to 6, fan->cooling_levels[0 to 5] will be changed all
310 * from 4 to 6. And state 5 (fan->cooling_levels[4]) should be
322 fan->cooling_levels[i] = state;
324 fan->cooling_levels[i] = i;
326 err = regmap_read(fan->regmap, fan->pwm.reg, &regval);
328 dev_err(fan->dev, "Failed to query PWM duty\n");
343 state = fan->cooling_levels[state];
344 err = regmap_write(fan->regmap, fan->pwm.reg,
347 dev_err(fan->dev, "Failed to write PWM duty\n");
359 static int mlxreg_fan_connect_verify(struct mlxreg_fan *fan,
365 err = regmap_read(fan->regmap, data->capability, &regval);
367 dev_err(fan->dev, "Failed to query capability register 0x%08x\n",
375 static int mlxreg_fan_speed_divider_get(struct mlxreg_fan *fan,
381 err = regmap_read(fan->regmap, data->capability, &regval);
383 dev_err(fan->dev, "Failed to query capability register 0x%08x\n",
395 fan->divider = regval * MLXREG_FAN_TACHO_DIV_MIN;
400 static int mlxreg_fan_config(struct mlxreg_fan *fan,
408 fan->samples = MLXREG_FAN_TACHO_SAMPLES_PER_PULSE_DEF;
409 fan->divider = MLXREG_FAN_TACHO_DIV_DEF;
413 dev_err(fan->dev, "too many tacho entries: %s\n",
419 err = mlxreg_fan_connect_verify(fan, data);
428 fan->tacho[tacho_num].reg = data->reg;
429 fan->tacho[tacho_num].mask = data->mask;
430 fan->tacho[tacho_num++].connected = true;
432 if (fan->pwm.connected) {
433 dev_err(fan->dev, "duplicate pwm entry: %s\n",
437 fan->pwm.reg = data->reg;
438 fan->pwm.connected = true;
441 dev_err(fan->dev, "duplicate conf entry: %s\n",
447 dev_err(fan->dev, "invalid conf entry params: %s\n",
452 err = mlxreg_fan_speed_divider_get(fan, data);
457 fan->samples = data->mask;
459 fan->divider = data->bit;
463 dev_err(fan->dev, "invalid label: %s\n", data->label);
470 fan->cooling_levels[i] = MLXREG_FAN_SPEED_MIN_LEVEL;
472 fan->cooling_levels[i] = i;
481 struct mlxreg_fan *fan;
491 fan = devm_kzalloc(dev, sizeof(*fan), GFP_KERNEL);
492 if (!fan)
495 fan->dev = dev;
496 fan->regmap = pdata->regmap;
498 err = mlxreg_fan_config(fan, pdata);
503 fan,
512 fan->cdev = devm_thermal_of_cooling_device_register(dev,
513 NULL, "mlxreg_fan", fan, &mlxreg_fan_cooling_ops);
514 if (IS_ERR(fan->cdev)) {
516 return PTR_ERR(fan->cdev);
525 .name = "mlxreg-fan",
535 MODULE_ALIAS("platform:mlxreg-fan");