Broken/damaged fan controller?

I think initially(the first day I worked with my unit) it worked okay and suddenly begin to fail. Currently, the symptom is constant (it fails always).

More findings:

  • Even though fan1_input reports 960, enabling emc2301 in FSC(fan speed control) mode doesn’t really stop the fan completely. Although it’s very quiet it does decent cooling to cool down thermal zones to 67 degrees Celsius. (I applied the 1.2GHz capping and 0.9v fix.)
  • Setting emc2301 in DS(direct setting) mode and writing 255 to the fan drive setting register makes the fan spin at full speed. Writing anything less than 255 to the register stops the fan completely.

So what I have is “moderate” “full” and “none” modes of control.

I slightly modified emc2301 kernel module to allow DS(direct setting) mode and wrote a script to control the cooling in userspace. It reasonably works for me.