When writing to the volume register, values without a decimal point do not get parsed correctly. For example, writing -20 to the volume register results in
[ 914.313055] Maximum attenuation exceeded.
[ 914.313062] Setting attenuation to -100 dB.
being printed to the kernel log.
In light of this, perhaps all of our drivers should use shared (and tested) string parsing/conversion functions.