Lines Matching refs:priv

621 static void aqc_delay_ctrl_report(struct aqc_data *priv)
627 if (priv->ctrl_report_delay) {
628 s64 delta = ktime_ms_delta(ktime_get(), priv->last_ctrl_report_op);
630 if (delta < priv->ctrl_report_delay)
631 msleep(priv->ctrl_report_delay - delta);
636 static int aqc_get_ctrl_data(struct aqc_data *priv)
640 aqc_delay_ctrl_report(priv);
642 memset(priv->buffer, 0x00, priv->buffer_size);
643 ret = hid_hw_raw_request(priv->hdev, priv->ctrl_report_id, priv->buffer, priv->buffer_size,
648 priv->last_ctrl_report_op = ktime_get();
654 static int aqc_send_ctrl_data(struct aqc_data *priv)
659 aqc_delay_ctrl_report(priv);
662 if (priv->kind != aquaero) {
664 checksum = crc16(0xffff, priv->buffer + priv->checksum_start,
665 priv->checksum_length);
669 put_unaligned_be16(checksum, priv->buffer + priv->checksum_offset);
673 ret = hid_hw_raw_request(priv->hdev, priv->ctrl_report_id, priv->buffer, priv->buffer_size,
679 ret = hid_hw_raw_request(priv->hdev, priv->secondary_ctrl_report_id,
680 priv->secondary_ctrl_report, priv->secondary_ctrl_report_size,
684 priv->last_ctrl_report_op = ktime_get();
690 static int aqc_get_ctrl_val(struct aqc_data *priv, int offset, long *val, int type)
694 mutex_lock(&priv->mutex);
696 ret = aqc_get_ctrl_data(priv);
702 *val = (s16)get_unaligned_be16(priv->buffer + offset);
705 *val = priv->buffer[offset];
712 mutex_unlock(&priv->mutex);
716 static int aqc_set_ctrl_vals(struct aqc_data *priv, int *offsets, long *vals, int *types, int len)
720 mutex_lock(&priv->mutex);
722 ret = aqc_get_ctrl_data(priv);
729 put_unaligned_be16((s16)vals[i], priv->buffer + offsets[i]);
732 priv->buffer[offsets[i]] = (u8)vals[i];
742 ret = aqc_send_ctrl_data(priv);
745 mutex_unlock(&priv->mutex);
749 static int aqc_set_ctrl_val(struct aqc_data *priv, int offset, long val, int type)
751 return aqc_set_ctrl_vals(priv, &offset, &val, &type, 1);
756 const struct aqc_data *priv = data;
760 if (channel < priv->num_temp_sensors) {
766 if (priv->temp_ctrl_offset != 0)
775 priv->num_temp_sensors + priv->num_virtual_temp_sensors +
776 priv->num_calc_virt_temp_sensors)
786 if (priv->fan_ctrl_offsets && channel < priv->num_fans) {
799 switch (priv->kind) {
823 if (channel < priv->num_fans + priv->num_flow_sensors)
827 if (channel < priv->num_fans)
834 if (priv->kind == quadro && channel == priv->num_fans)
841 if (priv->kind == leakshield && channel == 0)
849 switch (priv->kind) {
863 if (channel < priv->num_fans)
869 switch (priv->kind) {
881 if (channel < priv->num_fans)
887 switch (priv->kind) {
890 if (channel < priv->num_fans + 2)
900 if (channel < priv->num_fans)
913 static int aqc_legacy_read(struct aqc_data *priv)
917 mutex_lock(&priv->mutex);
919 memset(priv->buffer, 0x00, priv->buffer_size);
920 ret = hid_hw_raw_request(priv->hdev, priv->status_report_id, priv->buffer,
921 priv->buffer_size, HID_FEATURE_REPORT, HID_REQ_GET_REPORT);
926 for (i = 0; i < priv->num_temp_sensors; i++) {
927 sensor_value = get_unaligned_le16(priv->buffer + priv->temp_sensor_start_offset +
929 priv->temp_input[i] = sensor_value * 10;
933 switch (priv->kind) {
936 priv->serial_number[0] = get_unaligned_le16(priv->buffer +
937 priv->serial_number_start_offset);
938 priv->firmware_version =
939 get_unaligned_le16(priv->buffer + priv->firmware_version_offset);
942 sensor_value = get_unaligned_le16(priv->buffer + priv->fan_sensor_offsets[0]);
943 priv->speed_input[0] = aqc_aquastreamxt_convert_pump_rpm(sensor_value);
946 sensor_value = get_unaligned_le16(priv->buffer + AQUASTREAMXT_FAN_STATUS_OFFSET);
948 priv->speed_input[1] = 0;
951 get_unaligned_le16(priv->buffer + priv->fan_sensor_offsets[1]);
952 priv->speed_input[1] = aqc_aquastreamxt_convert_fan_rpm(sensor_value);
956 sensor_value = get_unaligned_le16(priv->buffer + AQUASTREAMXT_PUMP_CURR_OFFSET);
957 priv->current_input[0] = DIV_ROUND_CLOSEST(sensor_value * 176, 100) - 52;
959 sensor_value = get_unaligned_le16(priv->buffer + AQUASTREAMXT_PUMP_VOLTAGE_OFFSET);
960 priv->voltage_input[0] = DIV_ROUND_CLOSEST(sensor_value * 1000, 61);
962 sensor_value = get_unaligned_le16(priv->buffer + AQUASTREAMXT_FAN_VOLTAGE_OFFSET);
963 priv->voltage_input[1] = DIV_ROUND_CLOSEST(sensor_value * 1000, 63);
969 priv->updated = jiffies;
972 mutex_unlock(&priv->mutex);
980 struct aqc_data *priv = dev_get_drvdata(dev);
982 if (time_after(jiffies, priv->updated + STATUS_UPDATE_INTERVAL)) {
983 if (priv->status_report_id != 0) {
985 ret = aqc_legacy_read(priv);
997 if (priv->temp_input[channel] == -ENODATA)
1000 *val = priv->temp_input[channel];
1004 aqc_get_ctrl_val(priv, priv->temp_ctrl_offset +
1018 if (priv->speed_input[channel] == -ENODATA)
1021 *val = priv->speed_input[channel];
1024 *val = priv->speed_input_min[channel];
1027 *val = priv->speed_input_max[channel];
1030 *val = priv->speed_input_target[channel];
1033 ret = aqc_get_ctrl_val(priv, priv->flow_pulses_ctrl_offset,
1043 *val = priv->power_input[channel];
1046 switch (priv->kind) {
1048 ret = aqc_get_ctrl_val(priv,
1056 ret = aqc_get_ctrl_val(priv, priv->fan_ctrl_offsets[channel],
1066 *val = priv->voltage_input[channel];
1069 *val = priv->current_input[channel];
1081 struct aqc_data *priv = dev_get_drvdata(dev);
1084 int num_non_calc_sensors = priv->num_temp_sensors + priv->num_virtual_temp_sensors;
1088 if (channel < priv->num_temp_sensors) {
1089 *str = priv->temp_label[channel];
1091 if (priv->kind == aquaero && channel >= num_non_calc_sensors)
1093 priv->calc_virt_temp_label[channel - num_non_calc_sensors];
1095 *str = priv->virtual_temp_label[channel - priv->num_temp_sensors];
1099 *str = priv->speed_label[channel];
1102 *str = priv->power_label[channel];
1105 *str = priv->voltage_label[channel];
1108 *str = priv->current_label[channel];
1125 struct aqc_data *priv = dev_get_drvdata(dev);
1134 aqc_set_ctrl_val(priv, priv->temp_ctrl_offset +
1147 ret = aqc_set_ctrl_val(priv, priv->flow_pulses_ctrl_offset,
1163 switch (priv->kind) {
1172 ctrl_values_offsets[1] = priv->fan_ctrl_offsets[channel] +
1178 ctrl_values_offsets[2] = priv->fan_ctrl_offsets[channel] +
1184 ctrl_values_offsets[3] = priv->fan_ctrl_offsets[channel] +
1189 ret = aqc_set_ctrl_vals(priv, ctrl_values_offsets, ctrl_values,
1195 ret = aqc_set_ctrl_val(priv, priv->fan_ctrl_offsets[channel],
1299 struct aqc_data *priv;
1304 priv = hid_get_drvdata(hdev);
1307 priv->serial_number[0] = get_unaligned_be16(data + priv->serial_number_start_offset);
1308 priv->serial_number[1] = get_unaligned_be16(data + priv->serial_number_start_offset +
1310 priv->firmware_version = get_unaligned_be16(data + priv->firmware_version_offset);
1313 for (i = 0; i < priv->num_temp_sensors; i++) {
1315 priv->temp_sensor_start_offset +
1318 priv->temp_input[i] = -ENODATA;
1320 priv->temp_input[i] = sensor_value * 10;
1324 for (j = 0; j < priv->num_virtual_temp_sensors; j++) {
1326 priv->virtual_temp_sensor_start_offset +
1329 priv->temp_input[i] = -ENODATA;
1331 priv->temp_input[i] = sensor_value * 10;
1336 for (i = 0; i < priv->num_fans; i++) {
1337 priv->speed_input[i] =
1338 get_unaligned_be16(data + priv->fan_sensor_offsets[i] +
1339 priv->fan_structure->speed);
1340 priv->power_input[i] =
1341 get_unaligned_be16(data + priv->fan_sensor_offsets[i] +
1342 priv->fan_structure->power) * 10000;
1343 priv->voltage_input[i] =
1344 get_unaligned_be16(data + priv->fan_sensor_offsets[i] +
1345 priv->fan_structure->voltage) * 10;
1346 priv->current_input[i] =
1347 get_unaligned_be16(data + priv->fan_sensor_offsets[i] +
1348 priv->fan_structure->curr);
1352 for (j = 0; j < priv->num_flow_sensors; j++) {
1353 priv->speed_input[i] = get_unaligned_be16(data + priv->flow_sensors_start_offset +
1358 if (priv->power_cycle_count_offset != 0)
1359 priv->power_cycles = get_unaligned_be32(data + priv->power_cycle_count_offset);
1362 switch (priv->kind) {
1365 i = priv->num_temp_sensors + priv->num_virtual_temp_sensors;
1366 for (j = 0; j < priv->num_calc_virt_temp_sensors; j++) {
1368 priv->calc_virt_temp_sensor_start_offset +
1371 priv->temp_input[i] = -ENODATA;
1373 priv->temp_input[i] = sensor_value * 10;
1378 priv->speed_input[1] = get_unaligned_be16(data + AQUASTREAMULT_PUMP_OFFSET);
1379 priv->speed_input[2] = get_unaligned_be16(data + AQUASTREAMULT_PRESSURE_OFFSET);
1380 priv->speed_input[3] = get_unaligned_be16(data + AQUASTREAMULT_FLOW_SENSOR_OFFSET);
1382 priv->power_input[1] = get_unaligned_be16(data + AQUASTREAMULT_PUMP_POWER) * 10000;
1384 priv->voltage_input[1] = get_unaligned_be16(data + AQUASTREAMULT_PUMP_VOLTAGE) * 10;
1386 priv->current_input[1] = get_unaligned_be16(data + AQUASTREAMULT_PUMP_CURRENT);
1389 priv->voltage_input[2] = get_unaligned_be16(data + D5NEXT_5V_VOLTAGE) * 10;
1390 priv->voltage_input[3] = get_unaligned_be16(data + D5NEXT_12V_VOLTAGE) * 10;
1394 if (priv->temp_input[1] == -ENODATA)
1395 priv->power_input[0] = -ENODATA;
1397 priv->power_input[0] =
1400 priv->voltage_input[0] = get_unaligned_be16(data + HIGHFLOWNEXT_5V_VOLTAGE) * 10;
1401 priv->voltage_input[1] =
1404 priv->speed_input[1] = get_unaligned_be16(data + HIGHFLOWNEXT_WATER_QUALITY);
1405 priv->speed_input[2] = get_unaligned_be16(data + HIGHFLOWNEXT_CONDUCTIVITY);
1408 priv->speed_input[0] =
1410 priv->speed_input_min[0] = get_unaligned_be16(data + LEAKSHIELD_PRESSURE_MIN) * 100;
1411 priv->speed_input_target[0] =
1413 priv->speed_input_max[0] = get_unaligned_be16(data + LEAKSHIELD_PRESSURE_MAX) * 100;
1415 priv->speed_input[1] = get_unaligned_be16(data + LEAKSHIELD_PUMP_RPM_IN);
1416 if (priv->speed_input[1] == AQC_SENSOR_NA)
1417 priv->speed_input[1] = -ENODATA;
1419 priv->speed_input[2] = get_unaligned_be16(data + LEAKSHIELD_FLOW_IN);
1420 if (priv->speed_input[2] == AQC_SENSOR_NA)
1421 priv->speed_input[2] = -ENODATA;
1423 priv->speed_input[3] = get_unaligned_be16(data + LEAKSHIELD_RESERVOIR_VOLUME);
1424 priv->speed_input[4] = get_unaligned_be16(data + LEAKSHIELD_RESERVOIR_FILLED);
1427 priv->temp_input[1] = get_unaligned_be16(data + LEAKSHIELD_TEMPERATURE_2) * 10;
1433 priv->updated = jiffies;
1442 struct aqc_data *priv = seqf->private;
1444 seq_printf(seqf, "%05u-%05u\n", priv->serial_number[0], priv->serial_number[1]);
1452 struct aqc_data *priv = seqf->private;
1454 seq_printf(seqf, "%u\n", priv->firmware_version);
1462 struct aqc_data *priv = seqf->private;
1464 seq_printf(seqf, "%u\n", priv->power_cycles);
1470 static void aqc_debugfs_init(struct aqc_data *priv)
1474 scnprintf(name, sizeof(name), "%s_%s-%s", "aquacomputer", priv->name,
1475 dev_name(&priv->hdev->dev));
1477 priv->debugfs = debugfs_create_dir(name, NULL);
1479 if (priv->serial_number_start_offset != 0)
1480 debugfs_create_file("serial_number", 0444, priv->debugfs, priv,
1482 if (priv->firmware_version_offset != 0)
1483 debugfs_create_file("firmware_version", 0444, priv->debugfs, priv,
1485 if (priv->power_cycle_count_offset != 0)
1486 debugfs_create_file("power_cycles", 0444, priv->debugfs, priv, &power_cycles_fops);
1491 static void aqc_debugfs_init(struct aqc_data *priv)
1499 struct aqc_data *priv;
1502 priv = devm_kzalloc(&hdev->dev, sizeof(*priv), GFP_KERNEL);
1503 if (!priv)
1506 priv->hdev = hdev;
1507 hid_set_drvdata(hdev, priv);
1509 priv->updated = jiffies - STATUS_UPDATE_INTERVAL;
1541 priv->kind = aquaero;
1543 priv->num_fans = AQUAERO_NUM_FANS;
1544 priv->fan_sensor_offsets = aquaero_sensor_fan_offsets;
1545 priv->fan_ctrl_offsets = aquaero_ctrl_fan_offsets;
1547 priv->num_temp_sensors = AQUAERO_NUM_SENSORS;
1548 priv->temp_sensor_start_offset = AQUAERO_SENSOR_START;
1549 priv->num_virtual_temp_sensors = AQUAERO_NUM_VIRTUAL_SENSORS;
1550 priv->virtual_temp_sensor_start_offset = AQUAERO_VIRTUAL_SENSOR_START;
1551 priv->num_calc_virt_temp_sensors = AQUAERO_NUM_CALC_VIRTUAL_SENSORS;
1552 priv->calc_virt_temp_sensor_start_offset = AQUAERO_CALC_VIRTUAL_SENSOR_START;
1553 priv->num_flow_sensors = AQUAERO_NUM_FLOW_SENSORS;
1554 priv->flow_sensors_start_offset = AQUAERO_FLOW_SENSORS_START;
1556 priv->buffer_size = AQUAERO_CTRL_REPORT_SIZE;
1557 priv->temp_ctrl_offset = AQUAERO_TEMP_CTRL_OFFSET;
1558 priv->ctrl_report_delay = CTRL_REPORT_DELAY;
1560 priv->temp_label = label_temp_sensors;
1561 priv->virtual_temp_label = label_virtual_temp_sensors;
1562 priv->calc_virt_temp_label = label_aquaero_calc_temp_sensors;
1563 priv->speed_label = label_aquaero_speeds;
1564 priv->power_label = label_fan_power;
1565 priv->voltage_label = label_fan_voltage;
1566 priv->current_label = label_fan_current;
1569 priv->kind = d5next;
1571 priv->num_fans = D5NEXT_NUM_FANS;
1572 priv->fan_sensor_offsets = d5next_sensor_fan_offsets;
1573 priv->fan_ctrl_offsets = d5next_ctrl_fan_offsets;
1575 priv->num_temp_sensors = D5NEXT_NUM_SENSORS;
1576 priv->temp_sensor_start_offset = D5NEXT_COOLANT_TEMP;
1577 priv->num_virtual_temp_sensors = D5NEXT_NUM_VIRTUAL_SENSORS;
1578 priv->virtual_temp_sensor_start_offset = D5NEXT_VIRTUAL_SENSORS_START;
1579 priv->temp_ctrl_offset = D5NEXT_TEMP_CTRL_OFFSET;
1581 priv->buffer_size = D5NEXT_CTRL_REPORT_SIZE;
1582 priv->ctrl_report_delay = CTRL_REPORT_DELAY;
1584 priv->power_cycle_count_offset = D5NEXT_POWER_CYCLES;
1586 priv->temp_label = label_d5next_temp;
1587 priv->virtual_temp_label = label_virtual_temp_sensors;
1588 priv->speed_label = label_d5next_speeds;
1589 priv->power_label = label_d5next_power;
1590 priv->voltage_label = label_d5next_voltages;
1591 priv->current_label = label_d5next_current;
1594 priv->kind = farbwerk;
1596 priv->num_fans = 0;
1598 priv->num_temp_sensors = FARBWERK_NUM_SENSORS;
1599 priv->temp_sensor_start_offset = FARBWERK_SENSOR_START;
1601 priv->temp_label = label_temp_sensors;
1604 priv->kind = farbwerk360;
1606 priv->num_fans = 0;
1608 priv->num_temp_sensors = FARBWERK360_NUM_SENSORS;
1609 priv->temp_sensor_start_offset = FARBWERK360_SENSOR_START;
1610 priv->num_virtual_temp_sensors = FARBWERK360_NUM_VIRTUAL_SENSORS;
1611 priv->virtual_temp_sensor_start_offset = FARBWERK360_VIRTUAL_SENSORS_START;
1612 priv->temp_ctrl_offset = FARBWERK360_TEMP_CTRL_OFFSET;
1614 priv->buffer_size = FARBWERK360_CTRL_REPORT_SIZE;
1616 priv->temp_label = label_temp_sensors;
1617 priv->virtual_temp_label = label_virtual_temp_sensors;
1620 priv->kind = octo;
1622 priv->num_fans = OCTO_NUM_FANS;
1623 priv->fan_sensor_offsets = octo_sensor_fan_offsets;
1624 priv->fan_ctrl_offsets = octo_ctrl_fan_offsets;
1626 priv->num_temp_sensors = OCTO_NUM_SENSORS;
1627 priv->temp_sensor_start_offset = OCTO_SENSOR_START;
1628 priv->num_virtual_temp_sensors = OCTO_NUM_VIRTUAL_SENSORS;
1629 priv->virtual_temp_sensor_start_offset = OCTO_VIRTUAL_SENSORS_START;
1630 priv->temp_ctrl_offset = OCTO_TEMP_CTRL_OFFSET;
1632 priv->buffer_size = OCTO_CTRL_REPORT_SIZE;
1633 priv->ctrl_report_delay = CTRL_REPORT_DELAY;
1635 priv->power_cycle_count_offset = OCTO_POWER_CYCLES;
1637 priv->temp_label = label_temp_sensors;
1638 priv->virtual_temp_label = label_virtual_temp_sensors;
1639 priv->speed_label = label_fan_speed;
1640 priv->power_label = label_fan_power;
1641 priv->voltage_label = label_fan_voltage;
1642 priv->current_label = label_fan_current;
1645 priv->kind = quadro;
1647 priv->num_fans = QUADRO_NUM_FANS;
1648 priv->fan_sensor_offsets = quadro_sensor_fan_offsets;
1649 priv->fan_ctrl_offsets = quadro_ctrl_fan_offsets;
1651 priv->num_temp_sensors = QUADRO_NUM_SENSORS;
1652 priv->temp_sensor_start_offset = QUADRO_SENSOR_START;
1653 priv->num_virtual_temp_sensors = QUADRO_NUM_VIRTUAL_SENSORS;
1654 priv->virtual_temp_sensor_start_offset = QUADRO_VIRTUAL_SENSORS_START;
1655 priv->num_flow_sensors = QUADRO_NUM_FLOW_SENSORS;
1656 priv->flow_sensors_start_offset = QUADRO_FLOW_SENSOR_OFFSET;
1658 priv->temp_ctrl_offset = QUADRO_TEMP_CTRL_OFFSET;
1660 priv->buffer_size = QUADRO_CTRL_REPORT_SIZE;
1661 priv->ctrl_report_delay = CTRL_REPORT_DELAY;
1663 priv->flow_pulses_ctrl_offset = QUADRO_FLOW_PULSES_CTRL_OFFSET;
1664 priv->power_cycle_count_offset = QUADRO_POWER_CYCLES;
1666 priv->temp_label = label_temp_sensors;
1667 priv->virtual_temp_label = label_virtual_temp_sensors;
1668 priv->speed_label = label_quadro_speeds;
1669 priv->power_label = label_fan_power;
1670 priv->voltage_label = label_fan_voltage;
1671 priv->current_label = label_fan_current;
1674 priv->kind = highflownext;
1676 priv->num_fans = 0;
1678 priv->num_temp_sensors = HIGHFLOWNEXT_NUM_SENSORS;
1679 priv->temp_sensor_start_offset = HIGHFLOWNEXT_SENSOR_START;
1680 priv->num_flow_sensors = HIGHFLOWNEXT_NUM_FLOW_SENSORS;
1681 priv->flow_sensors_start_offset = HIGHFLOWNEXT_FLOW;
1683 priv->power_cycle_count_offset = QUADRO_POWER_CYCLES;
1685 priv->temp_label = label_highflownext_temp_sensors;
1686 priv->speed_label = label_highflownext_fan_speed;
1687 priv->power_label = label_highflownext_power;
1688 priv->voltage_label = label_highflownext_voltage;
1700 priv->kind = leakshield;
1702 priv->num_fans = 0;
1703 priv->num_temp_sensors = LEAKSHIELD_NUM_SENSORS;
1704 priv->temp_sensor_start_offset = LEAKSHIELD_TEMPERATURE_1;
1706 priv->temp_label = label_leakshield_temp_sensors;
1707 priv->speed_label = label_leakshield_fan_speed;
1710 priv->kind = aquastreamxt;
1712 priv->num_fans = AQUASTREAMXT_NUM_FANS;
1713 priv->fan_sensor_offsets = aquastreamxt_sensor_fan_offsets;
1715 priv->num_temp_sensors = AQUASTREAMXT_NUM_SENSORS;
1716 priv->temp_sensor_start_offset = AQUASTREAMXT_SENSOR_START;
1717 priv->buffer_size = AQUASTREAMXT_SENSOR_REPORT_SIZE;
1719 priv->temp_label = label_aquastreamxt_temp_sensors;
1720 priv->speed_label = label_d5next_speeds;
1721 priv->voltage_label = label_d5next_voltages;
1722 priv->current_label = label_d5next_current;
1725 priv->kind = aquastreamult;
1727 priv->num_fans = AQUASTREAMULT_NUM_FANS;
1728 priv->fan_sensor_offsets = aquastreamult_sensor_fan_offsets;
1730 priv->num_temp_sensors = AQUASTREAMULT_NUM_SENSORS;
1731 priv->temp_sensor_start_offset = AQUASTREAMULT_SENSOR_START;
1733 priv->temp_label = label_aquastreamult_temp;
1734 priv->speed_label = label_aquastreamult_speeds;
1735 priv->power_label = label_aquastreamult_power;
1736 priv->voltage_label = label_aquastreamult_voltages;
1737 priv->current_label = label_aquastreamult_current;
1740 priv->kind = poweradjust3;
1742 priv->num_fans = 0;
1744 priv->num_temp_sensors = POWERADJUST3_NUM_SENSORS;
1745 priv->temp_sensor_start_offset = POWERADJUST3_SENSOR_START;
1746 priv->buffer_size = POWERADJUST3_SENSOR_REPORT_SIZE;
1748 priv->temp_label = label_poweradjust3_temp_sensors;
1754 switch (priv->kind) {
1756 priv->serial_number_start_offset = AQUAERO_SERIAL_START;
1757 priv->firmware_version_offset = AQUAERO_FIRMWARE_VERSION;
1759 priv->fan_structure = &aqc_aquaero_fan_structure;
1761 priv->ctrl_report_id = AQUAERO_CTRL_REPORT_ID;
1762 priv->secondary_ctrl_report_id = AQUAERO_SECONDARY_CTRL_REPORT_ID;
1763 priv->secondary_ctrl_report_size = AQUAERO_SECONDARY_CTRL_REPORT_SIZE;
1764 priv->secondary_ctrl_report = aquaero_secondary_ctrl_report;
1767 priv->status_report_id = POWERADJUST3_STATUS_REPORT_ID;
1770 priv->serial_number_start_offset = AQUASTREAMXT_SERIAL_START;
1771 priv->firmware_version_offset = AQUASTREAMXT_FIRMWARE_VERSION;
1773 priv->status_report_id = AQUASTREAMXT_STATUS_REPORT_ID;
1776 priv->serial_number_start_offset = AQC_SERIAL_START;
1777 priv->firmware_version_offset = AQC_FIRMWARE_VERSION;
1779 priv->ctrl_report_id = CTRL_REPORT_ID;
1780 priv->secondary_ctrl_report_id = SECONDARY_CTRL_REPORT_ID;
1781 priv->secondary_ctrl_report_size = SECONDARY_CTRL_REPORT_SIZE;
1782 priv->secondary_ctrl_report = secondary_ctrl_report;
1784 if (priv->kind == aquastreamult)
1785 priv->fan_structure = &aqc_aquastreamult_fan_structure;
1787 priv->fan_structure = &aqc_general_fan_structure;
1791 if (priv->buffer_size != 0) {
1792 priv->checksum_start = 0x01;
1793 priv->checksum_length = priv->buffer_size - 3;
1794 priv->checksum_offset = priv->buffer_size - 2;
1797 priv->name = aqc_device_names[priv->kind];
1799 priv->buffer = devm_kzalloc(&hdev->dev, priv->buffer_size, GFP_KERNEL);
1800 if (!priv->buffer) {
1805 mutex_init(&priv->mutex);
1807 priv->hwmon_dev = hwmon_device_register_with_info(&hdev->dev, priv->name, priv,
1810 if (IS_ERR(priv->hwmon_dev)) {
1811 ret = PTR_ERR(priv->hwmon_dev);
1815 aqc_debugfs_init(priv);
1828 struct aqc_data *priv = hid_get_drvdata(hdev);
1830 debugfs_remove_recursive(priv->debugfs);
1831 hwmon_device_unregister(priv->hwmon_dev);