Ok, minor nitpicks below but it starting to shape up quite ok. You could
send it for inclusion upstream.
+/* acer ec functions */
+static int acerhdf_get_temp(void)
+{
+ u8 temp;
+ /* read temperature */
+ if (!ec_read(bios_settings[bios_version].tempreg, &temp)) {
+ if (verbose)
you need to check the error status here before printing the temperature
since it might be invalid if the ec_read has failed:
u8 temp;
int err;
err = ec_read(bios_settings[bios_version].tempreg, &temp);
if (err)
return ACERHDF_ERROR;
if (verbose)
acerhdf_notice("temp %d\n", temp);
return temp;
}
+ acerhdf_notice("temp %d\n", temp);
+ return temp;
+ }
+ return ACERHDF_ERROR;
+}
+
+
+ if (verbose)
+ acerhdf_error("read state: %d expected state: %d\n",
+ old_state, fanstate);
+
+ acerhdf_change_fanstate(ACERHDF_FAN_AUTO);
+ disable_kernelmode = 1;
+ }
+
+ if (state == 0) {
+ /* turn fan off only if below fanoff temperature */
+ if ((old_state == ACERHDF_FAN_AUTO) &&
+ (acerhdf_get_temp() < fanoff))
it might be cool to tell the user why you're not turning off the fan.
if (verbose)
acerhdf_notice("Not turning off fan due to current temp "
"exceeding fanoff value\n");