Received: by 2002:ac0:bc90:0:0:0:0:0 with SMTP id a16csp5587469img; Wed, 27 Mar 2019 11:12:30 -0700 (PDT) X-Google-Smtp-Source: APXvYqysiU7N4tgGfRxQawJx796FuWFgS8wspQMcXCnKVY+XCEoz+A5DYmQFC91U3YwZ6eDBCQj8 X-Received: by 2002:a17:902:a9c8:: with SMTP id b8mr38547881plr.12.1553710350770; Wed, 27 Mar 2019 11:12:30 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1553710350; cv=none; d=google.com; s=arc-20160816; b=rlDxxxI7zQTPcm+wu62QkykKezIu5cSP3FKHuTl8g3wKHQQtuING+JOX0vLbpihhVK CLI0quEXO+nZlB3kb8X8sKaB+yfKKf51FyayqvS36I1JwwrGNUXjdEIb8psLSkv4sOID bcnDxmC5qTXOtA8I37UTaSPOFIAjqDvSSDySzgKNUe+R/6sXTOPK89wtZ3uGVpDHbH4x RteptwXHmAQtzurv0eFXmrM4ReOjqRLp4IVm7pUmSJhoh3Eo7u3nYVpOqJywmELYRrtc jWPztjlsf3Yg/NukaoYzCurnOyQyWDliShUwkdfQSxO6z3tlUQFjGaCnuntJAzxBIRLT NGcQ== 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 :references:in-reply-to:message-id:date:subject:cc:to:from :dkim-signature; bh=f6sJDFfIMCutpx0WDF2aZLOKGVZ6jpYJwymldMx4b6w=; b=wKr4vXadwyl6Z8hHxpjSQ4LhylZ9hA/QRx7cg96G89PyqpVmvkhpUv+ch2n82/VNa5 +2rgD7KtuXWWVNBJGhsoA8gfYPE6nMjpIr7lf1u892eWh4xGVXzJ78ppS85LdbUhkTRy ZMfWnh4AuPe1sKHTTofuPXdF2UJnGrWaZkAv6h+TX1lzidU3e9L4TS6FaLK3g0ra7G8w lsyUFTJtHPuTBZ61Gj5NAckgWoJ64tABUrdWtlBqdGw9EzW7fPA+z9/zlCuX7rqzKQEj +acRq70agm/lyX7gwYRgXmabB/EZxlcekMuJQfY/U8V49ZqOCo7OCuzgiPPkQYjenvmE suNQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=default header.b=vGyf8DVG; 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; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id m2si10977014pll.44.2019.03.27.11.12.15; Wed, 27 Mar 2019 11:12:30 -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=vGyf8DVG; 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; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S2388791AbfC0SKV (ORCPT + 99 others); Wed, 27 Mar 2019 14:10:21 -0400 Received: from mail.kernel.org ([198.145.29.99]:52134 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S2388326AbfC0SKK (ORCPT ); Wed, 27 Mar 2019 14:10:10 -0400 Received: from sasha-vm.mshome.net (c-73-47-72-35.hsd1.nh.comcast.net [73.47.72.35]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPSA id 53EB521738; Wed, 27 Mar 2019 18:10:08 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1553710209; bh=QzJu+uoj2DxHCLNDHgzJX/nP9Zt+E+kuEFRMRQcqnN0=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=vGyf8DVGHvUjnDSEZhmUZbS2O+H/YfBa1LMyRTIwHo+cZuwHe8d9LxVFoCNQs68Xx igrMdnuJrZ9SK6ca9wRVFoyp694J1Qg/X1pJKn64WjUcuJlOR+poITU2N6vKhue9NN 6XK+uO8T9JEIhixGDsrtWZuGNn1O42CjYR7UOiJE= From: Sasha Levin To: linux-kernel@vger.kernel.org, stable@vger.kernel.org Cc: Jeremy Fertic , Jonathan Cameron , Sasha Levin , linux-iio@vger.kernel.org, devel@driverdev.osuosl.org Subject: [PATCH AUTOSEL 5.0 253/262] staging: iio: adt7316: fix dac_bits assignment Date: Wed, 27 Mar 2019 14:01:48 -0400 Message-Id: <20190327180158.10245-253-sashal@kernel.org> X-Mailer: git-send-email 2.19.1 In-Reply-To: <20190327180158.10245-1-sashal@kernel.org> References: <20190327180158.10245-1-sashal@kernel.org> MIME-Version: 1.0 X-Patchwork-Hint: Ignore 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 [ Upstream commit e9de475723de5bf207a5b7b88bdca863393e42c8 ] The value of dac_bits is used in adt7316_show_DAC() and adt7316_store_DAC(), and it should be either 8, 10, or 12 bits depending on the device in use. The driver currently only assigns a value to dac_bits in adt7316_store_da_high_resolution(). The purpose of the dac high resolution option is not to change dac resolution for normal operation. Instead, it is specific to an optional feature where one or two of the four dacs can be set to output voltage proportional to temperature. If the user chooses to set dac a and/or dac b to output voltage proportional to temperature, the da_high_resolution attribute can optionally be enabled to use 10 bit resolution rather than the default 8 bits. This is only available on the 10 and 12 bit dac devices. If the user attempts to read or write dacs a or b under these settings, the driver's current behaviour is to return an error. Dacs c and d continue to operate normally under these conditions. With the above in mind, remove the dac_bits assignments from this function since the value of dac_bits as used in the driver is not dependent on this dac high resolution option. Since the dac_bits assignments discussed above are currently the only ones in this driver, the default value of dac_bits is 0. This results in incorrect calculations when the dacs are read or written in adt7316_show_DAC() and adt7316_store_DAC(). To correct this, assign a value to dac_bits in adt7316_probe() to ensure correct operation as soon as the device is registered and available to userspace. 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: Sasha Levin --- drivers/staging/iio/addac/adt7316.c | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/drivers/staging/iio/addac/adt7316.c b/drivers/staging/iio/addac/adt7316.c index dc93e85808e0..7839d869d25d 100644 --- a/drivers/staging/iio/addac/adt7316.c +++ b/drivers/staging/iio/addac/adt7316.c @@ -651,17 +651,10 @@ static ssize_t adt7316_store_da_high_resolution(struct device *dev, u8 config3; int ret; - chip->dac_bits = 8; - - if (buf[0] == '1') { + if (buf[0] == '1') config3 = chip->config3 | ADT7316_DA_HIGH_RESOLUTION; - if (chip->id == ID_ADT7316 || chip->id == ID_ADT7516) - chip->dac_bits = 12; - else if (chip->id == ID_ADT7317 || chip->id == ID_ADT7517) - chip->dac_bits = 10; - } else { + else config3 = chip->config3 & (~ADT7316_DA_HIGH_RESOLUTION); - } ret = chip->bus.write(chip->bus.client, ADT7316_CONFIG3, config3); if (ret) @@ -2123,6 +2116,13 @@ int adt7316_probe(struct device *dev, struct adt7316_bus *bus, else return -ENODEV; + if (chip->id == ID_ADT7316 || chip->id == ID_ADT7516) + chip->dac_bits = 12; + else if (chip->id == ID_ADT7317 || chip->id == ID_ADT7517) + chip->dac_bits = 10; + else + chip->dac_bits = 8; + chip->ldac_pin = devm_gpiod_get_optional(dev, "adi,ldac", GPIOD_OUT_LOW); if (IS_ERR(chip->ldac_pin)) { ret = PTR_ERR(chip->ldac_pin); -- 2.19.1