tuxd3v / ats

91 stars 12 forks source link

Support for I²C PWM controller used on SOQuartz Model A Baseboard #36

Open dido opened 1 year ago

dido commented 1 year ago

I recently started setting up a SOQuartz Model A baseboard and attached a Waveshare CM4 heatsink with PWM controlled fan to the SOQuartz module. There is a GP7101 PWM controller sitting at address 0x58 on I²C bus 1, and one controls the fan by writing 8-bit values to data address 3, or 16-bit values to data address 2. I only ever tried the 8-bit mode. Writing 0x00:

i2cset -y 1 0x58 3 0x00

will turn the fan on permanently (this is the default status).

i2cset -y 1 0x58 3 0xff

turns the fan off permanently. Intermediate values result in the fan turning on and off at regular intervals, though this is not that noticeable below 0xd0 (1 second off, 2 seconds on)

I could try to add code to support this method of controlling the PWM fan since I don't think that there is a formal way to access the PWM controller via sysfs at this time.