Received: by 2002:a25:4158:0:0:0:0:0 with SMTP id o85csp432206yba; Wed, 15 May 2019 04:01:51 -0700 (PDT) X-Google-Smtp-Source: APXvYqw21vSv+5FgMmuGc0AnABLnC9MzT7eQp4TcHF9VfQ7ZhJ7zHpW6ols5vhv9gFmkvZqduwQr X-Received: by 2002:a17:902:382:: with SMTP id d2mr43738360pld.253.1557918111359; Wed, 15 May 2019 04:01:51 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1557918111; cv=none; d=google.com; s=arc-20160816; b=XJNpqIdaT7aO0tP5/6UBydc7iiXqigMUclusxKahgmtVsR7p3n+P5Nr4cvo6BMFwJ1 9pK6xSD2zkl8uxW7EY6F884Jcs3+pu3HcBp1kwNWEMht0TlK+6/6ouFHRaGEDKI1Q5Ik s3yHkWGeUxvJQnRCfBkOBCtUVWRppArS7DY8WvXkvbbIPAu8RATo3KyeYzxW4A+7vz3+ LWcChE/FKIjo+cn4pN4cNsyJkoog/9WilqtzyEQ2bM00qddUSOKpcm0qvOSaFatu8TRe Exx39XrV8PPGt2MthLSypV54d6uWUT171ZYFlusbklC6QYEDjTI9cCjjkguELR01bRM/ udYQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:content-transfer-encoding:mime-version :user-agent:references:in-reply-to:message-id:date:subject:cc:to :from:dkim-signature; bh=t5P97+P0dNBk/CfUpZn/Vb4FG/L55eDOWmC3fektB0g=; b=oNlCY9ocOFfays/PBeAqtmBZKXZYKYz3l5s8TP91yuQqgPMkXCsLvlyWRXqa8oEC+9 5uDycyWl1Gnw8qVDMgKetqgkygOrCb7IlZosNbvRw9MB/YYyDVK+Z9l0mtAQ39DM9f0l +mpb2H+XPoAhVodXt6hdRMtFx89Y4QFcB6t9KwI8LYTViTSqi16W2Ga654qCWW/LUy54 37wk8Ok/suqVDeA4pw9aYjHguJuSfBBpQZSwsO3FGCEuQVxQ4XRMFBBdCV9tvDdu9Haa srWzHt5aaCnd6hi1RREyQwWS0tEEiy4HjsGUIN9TaROug8Ul0S5REB/0TtS4GLnq1cU1 DOWg== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=default header.b=ARJNEqpC; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id j22si1799865pfi.167.2019.05.15.04.01.35; Wed, 15 May 2019 04:01:51 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; dkim=pass header.i=@kernel.org header.s=default header.b=ARJNEqpC; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1727266AbfEOK7t (ORCPT + 99 others); Wed, 15 May 2019 06:59:49 -0400 Received: from mail.kernel.org ([198.145.29.99]:56422 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1727242AbfEOK7q (ORCPT ); Wed, 15 May 2019 06:59:46 -0400 Received: from localhost (83-86-89-107.cable.dynamic.v4.ziggo.nl [83.86.89.107]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPSA id 82EDE2084F; Wed, 15 May 2019 10:59:45 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1557917986; bh=MkJAxibFcQEvGbfg4UeaKGxJxd+hEz/ZojEKY43Dfq0=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=ARJNEqpCY09w9VAZYQz8uWhI7yQ6OnpkBAGhHdPj44/PzoBu3mKJT53SkDijzHsYQ 9gpe01AG4AxSzI2Fz6JnrVgi5V1unmM3Lxj/C20kDL6eiel17S1wsPUrFvKbzCD7Gz phYVq7JnKePwq4U0SL7oG9XDufZm/b1BIDbBhEmA= From: Greg Kroah-Hartman To: linux-kernel@vger.kernel.org Cc: Greg Kroah-Hartman , stable@vger.kernel.org, Jeremy Fertic , Jonathan Cameron Subject: [PATCH 3.18 49/86] staging: iio: adt7316: fix the dac read calculation Date: Wed, 15 May 2019 12:55:26 +0200 Message-Id: <20190515090652.214503157@linuxfoundation.org> X-Mailer: git-send-email 2.21.0 In-Reply-To: <20190515090642.339346723@linuxfoundation.org> References: <20190515090642.339346723@linuxfoundation.org> User-Agent: quilt/0.66 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org From: Jeremy Fertic commit 45130fb030aec26ac28b4bb23344901df3ec3b7f upstream. The calculation of the current dac value is using the wrong bits of the dac lsb register. Create two macros to shift the lsb register value into lsb position, depending on whether the dac is 10 or 12 bit. Initialize data to 0 so, with an 8 bit dac, the msb register value can be bitwise ORed with data. Fixes: 35f6b6b86ede ("staging: iio: new ADT7316/7/8 and ADT7516/7/9 driver") Signed-off-by: Jeremy Fertic Signed-off-by: Jonathan Cameron Signed-off-by: Greg Kroah-Hartman --- drivers/staging/iio/addac/adt7316.c | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) --- a/drivers/staging/iio/addac/adt7316.c +++ b/drivers/staging/iio/addac/adt7316.c @@ -47,6 +47,8 @@ #define ADT7516_MSB_AIN3 0xA #define ADT7516_MSB_AIN4 0xB #define ADT7316_DA_DATA_BASE 0x10 +#define ADT7316_DA_10_BIT_LSB_SHIFT 6 +#define ADT7316_DA_12_BIT_LSB_SHIFT 4 #define ADT7316_DA_MSB_DATA_REGS 4 #define ADT7316_LSB_DAC_A 0x10 #define ADT7316_MSB_DAC_A 0x11 @@ -1414,7 +1416,7 @@ static IIO_DEVICE_ATTR(ex_analog_temp_of static ssize_t adt7316_show_DAC(struct adt7316_chip_info *chip, int channel, char *buf) { - u16 data; + u16 data = 0; u8 msb, lsb, offset; int ret; @@ -1439,7 +1441,11 @@ static ssize_t adt7316_show_DAC(struct a if (ret) return -EIO; - data = (msb << offset) + (lsb & ((1 << offset) - 1)); + if (chip->dac_bits == 12) + data = lsb >> ADT7316_DA_12_BIT_LSB_SHIFT; + else if (chip->dac_bits == 10) + data = lsb >> ADT7316_DA_10_BIT_LSB_SHIFT; + data |= msb << offset; return sprintf(buf, "%d\n", data); }