Lines Matching refs:data
91 struct dell_smm_data *data;
106 MODULE_PARM_DESC(ignore_dmi, "Continue probing hardware even if DMI data does not match");
226 static int i8k_get_fan_status(const struct dell_smm_data *data, u8 fan)
233 if (data->disallow_fan_support)
242 static int i8k_get_fan_speed(const struct dell_smm_data *data, u8 fan)
249 if (data->disallow_fan_support)
252 return i8k_smm(®s) ? : (regs.eax & 0xffff) * data->i8k_fan_mult;
258 static int _i8k_get_fan_type(const struct dell_smm_data *data, u8 fan)
265 if (data->disallow_fan_support || data->disallow_fan_type_call)
271 static int i8k_get_fan_type(struct dell_smm_data *data, u8 fan)
274 if (data->fan_type[fan] == INT_MIN)
275 data->fan_type[fan] = _i8k_get_fan_type(data, fan);
277 return data->fan_type[fan];
283 static int __init i8k_get_fan_nominal_speed(const struct dell_smm_data *data, u8 fan, int speed)
290 if (data->disallow_fan_support)
299 static int i8k_enable_fan_auto_mode(const struct dell_smm_data *data, bool enable)
303 if (data->disallow_fan_support)
306 regs.eax = enable ? data->auto_fan : data->manual_fan;
313 static int i8k_set_fan(const struct dell_smm_data *data, u8 fan, int speed)
317 if (data->disallow_fan_support)
320 speed = (speed < 0) ? 0 : ((speed > data->i8k_fan_max) ? data->i8k_fan_max : speed);
437 struct dell_smm_data *data = pde_data(file_inode(fp));
447 if (!isdigit(data->bios_version[0]) || !isdigit(data->bios_version[1]) ||
448 !isdigit(data->bios_version[2]))
451 val = (data->bios_version[0] << 16) |
452 (data->bios_version[1] << 8) | data->bios_version[2];
462 if (copy_to_user(argp, data->bios_machineid, sizeof(data->bios_machineid)))
485 val = i8k_get_fan_speed(data, val);
495 val = i8k_get_fan_status(data, val);
511 mutex_lock(&data->i8k_mutex);
512 err = i8k_set_fan(data, val, speed);
516 val = i8k_get_fan_status(data, val);
517 mutex_unlock(&data->i8k_mutex);
538 struct dell_smm_data *data = seq->private;
543 left_fan = i8k_get_fan_status(data, I8K_FAN_LEFT); /* 580 µs */
544 right_fan = i8k_get_fan_status(data, I8K_FAN_RIGHT); /* 580 µs */
545 left_speed = i8k_get_fan_speed(data, I8K_FAN_LEFT); /* 580 µs */
546 right_speed = i8k_get_fan_speed(data, I8K_FAN_RIGHT); /* 580 µs */
569 data->bios_version,
570 (restricted && !capable(CAP_SYS_ADMIN)) ? "-1" : data->bios_machineid,
598 struct dell_smm_data *data = dev_get_drvdata(dev);
601 if (proc_create_data("i8k", 0, NULL, &i8k_proc_ops, data))
617 *state = cdata->data->i8k_fan_max;
627 ret = i8k_get_fan_status(cdata->data, cdata->fan_num);
639 struct dell_smm_data *data = cdata->data;
642 if (state > data->i8k_fan_max)
645 mutex_lock(&data->i8k_mutex);
646 ret = i8k_set_fan(data, cdata->fan_num, (int)state);
647 mutex_unlock(&data->i8k_mutex);
661 const struct dell_smm_data *data = drvdata;
668 if (data->temp_type[channel] >= 0 || _i8k_get_temp(channel) >= 0)
673 if (data->temp_type[channel] >= 0)
682 if (data->disallow_fan_support)
687 if (data->fan[channel])
692 if (data->fan[channel] && !data->disallow_fan_type_call)
699 if (data->fan_nominal_speed[channel])
708 if (data->disallow_fan_support)
713 if (data->fan[channel])
718 if (data->auto_fan)
742 struct dell_smm_data *data = dev_get_drvdata(dev);
743 int mult = data->i8k_fan_mult;
764 ret = i8k_get_fan_speed(data, channel);
772 *val = data->fan_nominal_speed[channel][0] * mult;
776 *val = data->fan_nominal_speed[channel][data->i8k_fan_max] * mult;
780 ret = i8k_get_fan_status(data, channel);
784 if (ret > data->i8k_fan_max)
785 ret = data->i8k_fan_max;
787 *val = data->fan_nominal_speed[channel][ret] * mult;
797 ret = i8k_get_fan_status(data, channel);
801 *val = clamp_val(ret * data->i8k_pwm_mult, 0, 255);
815 static const char *dell_smm_fan_label(struct dell_smm_data *data, int channel)
818 int type = i8k_get_fan_type(data, channel);
837 struct dell_smm_data *data = dev_get_drvdata(dev);
843 *str = temp_labels[data->temp_type[channel]];
852 *str = dell_smm_fan_label(data, channel);
868 struct dell_smm_data *data = dev_get_drvdata(dev);
877 pwm = clamp_val(DIV_ROUND_CLOSEST(val, data->i8k_pwm_mult), 0,
878 data->i8k_fan_max);
880 mutex_lock(&data->i8k_mutex);
881 err = i8k_set_fan(data, channel, pwm);
882 mutex_unlock(&data->i8k_mutex);
897 mutex_lock(&data->i8k_mutex);
898 err = i8k_enable_fan_auto_mode(data, enable);
899 mutex_unlock(&data->i8k_mutex);
960 struct dell_smm_data *data = dev_get_drvdata(dev);
973 cdata->data = data;
991 struct dell_smm_data *data = dev_get_drvdata(dev);
997 data->temp_type[i] = i8k_get_temp_type(i);
998 if (data->temp_type[i] < 0)
1001 if (data->temp_type[i] >= ARRAY_SIZE(temp_labels))
1002 data->temp_type[i] = ARRAY_SIZE(temp_labels) - 1;
1006 data->fan_type[i] = INT_MIN;
1007 err = i8k_get_fan_status(data, i);
1009 err = i8k_get_fan_type(data, i);
1014 data->fan[i] = true;
1024 data->fan_nominal_speed[i] = devm_kmalloc_array(dev, data->i8k_fan_max + 1,
1025 sizeof(*data->fan_nominal_speed[i]),
1027 if (!data->fan_nominal_speed[i])
1030 for (state = 0; state <= data->i8k_fan_max; state++) {
1031 err = i8k_get_fan_nominal_speed(data, i, state);
1034 devm_kfree(dev, data->fan_nominal_speed[i]);
1035 data->fan_nominal_speed[i] = NULL;
1038 data->fan_nominal_speed[i][state] = err;
1045 data->i8k_fan_mult = 1;
1049 dell_smm_hwmon_dev = devm_hwmon_device_register_with_info(dev, "dell_smm", data,
1346 struct dell_smm_data *data;
1350 data = devm_kzalloc(&pdev->dev, sizeof(struct dell_smm_data), GFP_KERNEL);
1351 if (!data)
1354 mutex_init(&data->i8k_mutex);
1355 platform_set_drvdata(pdev, data);
1360 data->disallow_fan_support = true;
1369 data->disallow_fan_type_call = true;
1375 strscpy(data->bios_version, i8k_get_dmi_data(DMI_BIOS_VERSION),
1376 sizeof(data->bios_version));
1377 strscpy(data->bios_machineid, i8k_get_dmi_data(DMI_PRODUCT_SERIAL),
1378 sizeof(data->bios_machineid));
1396 data->i8k_fan_mult = fan_mult ? : I8K_FAN_MULT;
1397 data->i8k_fan_max = fan_max ? : I8K_FAN_HIGH;
1398 data->i8k_pwm_mult = DIV_ROUND_UP(255, data->i8k_fan_max);
1404 data->manual_fan = control->manual_fan;
1405 data->auto_fan = control->auto_fan;