I spent a bit of time in the last few weeks updating my emc230x driver only to find someone else (NVIDIA) got theirs into staging before me
This one might work better for you as it appears to work on PWM duty cycle only (not RPM target as we do):
https://git.kernel.org/pub/scm/linux/kernel/git/groeck/linux-staging.git/commit/?h=hwmon-next&id=c8b840f867c72dcbefd981be656c3de767e43ac6
The new driver doesn’t have FDT support (upstream refuses to add new fan-PWM DT bindings until someone (probably me) comes up with a ‘standard binding’) so we can’t adopt it as is.
(Lack of accepted device tree binding is also hindering my efforts to update and upstream U-Boot)
I would prefer to use RPM to define operating ranges rather than duty cycle % but could compromise if upstream doesn’t agree.