Loading drivers/hwmon/asus_atk0110.c +44 −54 Original line number Diff line number Diff line Loading @@ -1047,76 +1047,75 @@ static int atk_register_hwmon(struct atk_data *data) return err; } static int atk_check_old_if(struct atk_data *data) static int atk_probe_if(struct atk_data *data) { struct device *dev = &data->acpi_dev->dev; acpi_handle ret; acpi_status status; int err = 0; /* RTMP: read temperature */ status = acpi_get_handle(data->atk_handle, METHOD_OLD_READ_TMP, &ret); if (status != AE_OK) { if (ACPI_SUCCESS(status)) data->rtmp_handle = ret; else dev_dbg(dev, "method " METHOD_OLD_READ_TMP " not found: %s\n", acpi_format_exception(status)); return -ENODEV; } data->rtmp_handle = ret; /* RVLT: read voltage */ status = acpi_get_handle(data->atk_handle, METHOD_OLD_READ_VLT, &ret); if (status != AE_OK) { if (ACPI_SUCCESS(status)) data->rvlt_handle = ret; else dev_dbg(dev, "method " METHOD_OLD_READ_VLT " not found: %s\n", acpi_format_exception(status)); return -ENODEV; } data->rvlt_handle = ret; /* RFAN: read fan status */ status = acpi_get_handle(data->atk_handle, METHOD_OLD_READ_FAN, &ret); if (status != AE_OK) { if (ACPI_SUCCESS(status)) data->rfan_handle = ret; else dev_dbg(dev, "method " METHOD_OLD_READ_FAN " not found: %s\n", acpi_format_exception(status)); return -ENODEV; } data->rfan_handle = ret; return 0; } static int atk_check_new_if(struct atk_data *data) { struct device *dev = &data->acpi_dev->dev; acpi_handle ret; acpi_status status; /* Enumeration */ status = acpi_get_handle(data->atk_handle, METHOD_ENUMERATE, &ret); if (status != AE_OK) { if (ACPI_SUCCESS(status)) data->enumerate_handle = ret; else dev_dbg(dev, "method " METHOD_ENUMERATE " not found: %s\n", acpi_format_exception(status)); return -ENODEV; } data->enumerate_handle = ret; /* De-multiplexer (read) */ status = acpi_get_handle(data->atk_handle, METHOD_READ, &ret); if (status != AE_OK) { if (ACPI_SUCCESS(status)) data->read_handle = ret; else dev_dbg(dev, "method " METHOD_READ " not found: %s\n", acpi_format_exception(status)); return -ENODEV; } data->read_handle = ret; /* De-multiplexer (write) */ status = acpi_get_handle(data->atk_handle, METHOD_WRITE, &ret); if (status != AE_OK) { dev_dbg(dev, "method " METHOD_READ " not found: %s\n", acpi_format_exception(status)); return -ENODEV; } if (ACPI_SUCCESS(status)) data->write_handle = ret; else dev_dbg(dev, "method " METHOD_WRITE " not found: %s\n", acpi_format_exception(status)); return 0; /* Check for hwmon methods: first check "old" style methods; note that * both may be present: in this case we stick to the old interface; * analysis of multiple DSDTs indicates that when both interfaces * are present the new one (GGRP/GITM) is not functional. */ if (data->rtmp_handle && data->rvlt_handle && data->rfan_handle) data->old_interface = true; else if (data->enumerate_handle && data->read_handle && data->write_handle) data->old_interface = false; else err = -ENODEV; return err; } static int atk_add(struct acpi_device *device) Loading Loading @@ -1155,28 +1154,19 @@ static int atk_add(struct acpi_device *device) } ACPI_FREE(buf.pointer); /* Check for hwmon methods: first check "old" style methods; note that * both may be present: in this case we stick to the old interface; * analysis of multiple DSDTs indicates that when both interfaces * are present the new one (GGRP/GITM) is not functional. */ err = atk_check_old_if(data); if (!err) { dev_dbg(&device->dev, "Using old hwmon interface\n"); data->old_interface = true; } else { err = atk_check_new_if(data); if (err) err = atk_probe_if(data); if (err) { dev_err(&device->dev, "No usable hwmon interface detected\n"); goto out; dev_dbg(&device->dev, "Using new hwmon interface\n"); data->old_interface = false; } if (data->old_interface) if (data->old_interface) { dev_dbg(&device->dev, "Using old hwmon interface\n"); err = atk_enumerate_old_hwmon(data); else } else { dev_dbg(&device->dev, "Using new hwmon interface\n"); err = atk_enumerate_new_hwmon(data); } if (err < 0) goto out; if (err == 0) { Loading Loading
drivers/hwmon/asus_atk0110.c +44 −54 Original line number Diff line number Diff line Loading @@ -1047,76 +1047,75 @@ static int atk_register_hwmon(struct atk_data *data) return err; } static int atk_check_old_if(struct atk_data *data) static int atk_probe_if(struct atk_data *data) { struct device *dev = &data->acpi_dev->dev; acpi_handle ret; acpi_status status; int err = 0; /* RTMP: read temperature */ status = acpi_get_handle(data->atk_handle, METHOD_OLD_READ_TMP, &ret); if (status != AE_OK) { if (ACPI_SUCCESS(status)) data->rtmp_handle = ret; else dev_dbg(dev, "method " METHOD_OLD_READ_TMP " not found: %s\n", acpi_format_exception(status)); return -ENODEV; } data->rtmp_handle = ret; /* RVLT: read voltage */ status = acpi_get_handle(data->atk_handle, METHOD_OLD_READ_VLT, &ret); if (status != AE_OK) { if (ACPI_SUCCESS(status)) data->rvlt_handle = ret; else dev_dbg(dev, "method " METHOD_OLD_READ_VLT " not found: %s\n", acpi_format_exception(status)); return -ENODEV; } data->rvlt_handle = ret; /* RFAN: read fan status */ status = acpi_get_handle(data->atk_handle, METHOD_OLD_READ_FAN, &ret); if (status != AE_OK) { if (ACPI_SUCCESS(status)) data->rfan_handle = ret; else dev_dbg(dev, "method " METHOD_OLD_READ_FAN " not found: %s\n", acpi_format_exception(status)); return -ENODEV; } data->rfan_handle = ret; return 0; } static int atk_check_new_if(struct atk_data *data) { struct device *dev = &data->acpi_dev->dev; acpi_handle ret; acpi_status status; /* Enumeration */ status = acpi_get_handle(data->atk_handle, METHOD_ENUMERATE, &ret); if (status != AE_OK) { if (ACPI_SUCCESS(status)) data->enumerate_handle = ret; else dev_dbg(dev, "method " METHOD_ENUMERATE " not found: %s\n", acpi_format_exception(status)); return -ENODEV; } data->enumerate_handle = ret; /* De-multiplexer (read) */ status = acpi_get_handle(data->atk_handle, METHOD_READ, &ret); if (status != AE_OK) { if (ACPI_SUCCESS(status)) data->read_handle = ret; else dev_dbg(dev, "method " METHOD_READ " not found: %s\n", acpi_format_exception(status)); return -ENODEV; } data->read_handle = ret; /* De-multiplexer (write) */ status = acpi_get_handle(data->atk_handle, METHOD_WRITE, &ret); if (status != AE_OK) { dev_dbg(dev, "method " METHOD_READ " not found: %s\n", acpi_format_exception(status)); return -ENODEV; } if (ACPI_SUCCESS(status)) data->write_handle = ret; else dev_dbg(dev, "method " METHOD_WRITE " not found: %s\n", acpi_format_exception(status)); return 0; /* Check for hwmon methods: first check "old" style methods; note that * both may be present: in this case we stick to the old interface; * analysis of multiple DSDTs indicates that when both interfaces * are present the new one (GGRP/GITM) is not functional. */ if (data->rtmp_handle && data->rvlt_handle && data->rfan_handle) data->old_interface = true; else if (data->enumerate_handle && data->read_handle && data->write_handle) data->old_interface = false; else err = -ENODEV; return err; } static int atk_add(struct acpi_device *device) Loading Loading @@ -1155,28 +1154,19 @@ static int atk_add(struct acpi_device *device) } ACPI_FREE(buf.pointer); /* Check for hwmon methods: first check "old" style methods; note that * both may be present: in this case we stick to the old interface; * analysis of multiple DSDTs indicates that when both interfaces * are present the new one (GGRP/GITM) is not functional. */ err = atk_check_old_if(data); if (!err) { dev_dbg(&device->dev, "Using old hwmon interface\n"); data->old_interface = true; } else { err = atk_check_new_if(data); if (err) err = atk_probe_if(data); if (err) { dev_err(&device->dev, "No usable hwmon interface detected\n"); goto out; dev_dbg(&device->dev, "Using new hwmon interface\n"); data->old_interface = false; } if (data->old_interface) if (data->old_interface) { dev_dbg(&device->dev, "Using old hwmon interface\n"); err = atk_enumerate_old_hwmon(data); else } else { dev_dbg(&device->dev, "Using new hwmon interface\n"); err = atk_enumerate_new_hwmon(data); } if (err < 0) goto out; if (err == 0) { Loading