• Stevens, Nick's avatar
    hwmon: (mcp3021) Fix broken output scaling · 90606a14
    Stevens, Nick authored
    [ Upstream commit 347d7e45 ]
    
    The mcp3021 scaling code is dividing the VDD (full-scale) value in
    millivolts by the A2D resolution to obtain the scaling factor. When VDD
    is 3300mV (the standard value) and the resolution is 12-bit (4096
    divisions), the result is a scale factor of 3300/4096, which is always
    one.  Effectively, the raw A2D reading is always being returned because
    no scaling is applied.
    
    This patch fixes the issue and simplifies the register-to-volts
    calculation, removing the unneeded "output_scale" struct member.
    Signed-off-by: default avatarNick Stevens <Nick.Stevens@digi.com>
    Cc: stable@vger.kernel.org # v3.10+
    [Guenter Roeck: Dropped unnecessary value check]
    Signed-off-by: default avatarGuenter Roeck <linux@roeck-us.net>
    Signed-off-by: default avatarSasha Levin <sasha.levin@oracle.com>
    90606a14
mcp3021.c 4.41 KB