Received: by 2002:a05:6902:102b:0:0:0:0 with SMTP id x11csp1121819ybt; Tue, 7 Jul 2020 08:15:26 -0700 (PDT) X-Google-Smtp-Source: ABdhPJwy6NFXSSAWw9cVZ8h9NQVHYgpKONRxAmbfinfzO8wd7fAoxK3viT87Sfu3lX2xg0zSGpBN X-Received: by 2002:a05:6402:22d5:: with SMTP id dm21mr37033003edb.26.1594134926683; Tue, 07 Jul 2020 08:15:26 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1594134926; cv=none; d=google.com; s=arc-20160816; b=KlEPGstuB19NE5eQ3B3qKa4GXimO1nrOtD5CkRxzdtj94EcBl08OtfhMjeh/Ktv0Y+ SBGl5BTB7JL1GsDWwaKIWuqmUaEg4ZAXGBxcU+Bqe2JsVzlu80pi90/1tI/f8ygMLKjm PTk2DVQ8FvGww3/SC5kM0i5JZgNi999jq2jIVAPjB3DKAZdKck5RBAkks5kSodx2PbE5 LCC398i/g/3hDSleNUb8xGisIQX2V1uDYHy42ey2VhEkxtZRgTNbz0mg9H39ZBqAbOFx Hv3RNF6zvSa8Gz2ndsQCuVnOGhTn5I0PLzb4h1uVv05w74bbk0fgTaV3G5JIA23Hj+0y jSYA== 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=0MS916cUZcYURB5oG9Uosgj0jLmNnzoS7WE+rMSlMfo=; b=r1XUWbCsa6dvhKeYS4vX6rzx4E9jjv+IkozzIeFzcz+ptA1gTcgN/coYbmdFvvn0hy skTmeI8YQKayAo3kxhcGI6DsfvITDkhexjtUxrG9JLRFXGTdyEdX13oRsGN5Y+pj7ni4 ZysFTJ4/jPFyRtibNXS0VIIQ9ksWKXeYtrLSURnwtB1qrhpx4lpR8v3YDIS3Ku+W6yrt qhy5BipYbiFSDO/SyeOLuMXCNog8S7oZMAcgddGXXh1r0dFCodz2A/sQu8QrdBtBhPpZ gaGUcKxzaX7v9ijQkdYhUqkYC1M/3cj/agLpm6oZ5crcBWgTWuXr69lXqj0CcCxddUW7 3NMg== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=default header.b=VJbW43QC; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id d2si14869243ejy.718.2020.07.07.08.15.03; Tue, 07 Jul 2020 08:15:26 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; dkim=pass header.i=@kernel.org header.s=default header.b=VJbW43QC; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1728517AbgGGPOV (ORCPT + 99 others); Tue, 7 Jul 2020 11:14:21 -0400 Received: from mail.kernel.org ([198.145.29.99]:53526 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1728487AbgGGPOQ (ORCPT ); Tue, 7 Jul 2020 11:14:16 -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 83E6120674; Tue, 7 Jul 2020 15:14:15 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1594134856; bh=BUnxTZ/EJQs2L/Farqq3ymAPQoSr6DJTHzHmh8O1Xc4=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=VJbW43QC5kxxmW6dNoj03d6LDzMaLrg9rE1ncU1n3vwZ//n+JRHl1eXqCvW7TI/XK qAiRsdPDiqcfjijEwL+yFj+jNKgtjXKTdc3XYwTO/BMEJRb2an/uPJ8IsqCaA0MBrS lz8Pgm+5W3p2+jgItdHajFLW3wpD0bYmMqUH25x0= From: Greg Kroah-Hartman To: linux-kernel@vger.kernel.org Cc: Greg Kroah-Hartman , stable@vger.kernel.org, Chu Lin , Guenter Roeck , Sasha Levin Subject: [PATCH 4.9 14/24] hwmon: (max6697) Make sure the OVERT mask is set correctly Date: Tue, 7 Jul 2020 17:13:46 +0200 Message-Id: <20200707145749.656617937@linuxfoundation.org> X-Mailer: git-send-email 2.27.0 In-Reply-To: <20200707145748.952502272@linuxfoundation.org> References: <20200707145748.952502272@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: Chu Lin [ Upstream commit 016983d138cbe99a5c0aaae0103ee88f5300beb3 ] Per the datasheet for max6697, OVERT mask and ALERT mask are different. For example, the 7th bit of OVERT is the local channel but for alert mask, the 6th bit is the local channel. Therefore, we can't apply the same mask for both registers. In addition to that, the max6697 driver is supposed to be compatibale with different models. I manually went over all the listed chips and made sure all chip types have the same layout. Testing; mask value of 0x9 should map to 0x44 for ALERT and 0x84 for OVERT. I used iotool to read the reg value back to verify. I only tested this change on max6581. Reference: https://datasheets.maximintegrated.com/en/ds/MAX6581.pdf https://datasheets.maximintegrated.com/en/ds/MAX6697.pdf https://datasheets.maximintegrated.com/en/ds/MAX6699.pdf Signed-off-by: Chu Lin Fixes: 5372d2d71c46e ("hwmon: Driver for Maxim MAX6697 and compatibles") Signed-off-by: Guenter Roeck Signed-off-by: Sasha Levin --- drivers/hwmon/max6697.c | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/drivers/hwmon/max6697.c b/drivers/hwmon/max6697.c index f03a71722849a..d4bb3d6aaf18c 100644 --- a/drivers/hwmon/max6697.c +++ b/drivers/hwmon/max6697.c @@ -46,8 +46,9 @@ static const u8 MAX6697_REG_CRIT[] = { * Map device tree / platform data register bit map to chip bit map. * Applies to alert register and over-temperature register. */ -#define MAX6697_MAP_BITS(reg) ((((reg) & 0x7e) >> 1) | \ +#define MAX6697_ALERT_MAP_BITS(reg) ((((reg) & 0x7e) >> 1) | \ (((reg) & 0x01) << 6) | ((reg) & 0x80)) +#define MAX6697_OVERT_MAP_BITS(reg) (((reg) >> 1) | (((reg) & 0x01) << 7)) #define MAX6697_REG_STAT(n) (0x44 + (n)) @@ -586,12 +587,12 @@ static int max6697_init_chip(struct max6697_data *data, return ret; ret = i2c_smbus_write_byte_data(client, MAX6697_REG_ALERT_MASK, - MAX6697_MAP_BITS(pdata->alert_mask)); + MAX6697_ALERT_MAP_BITS(pdata->alert_mask)); if (ret < 0) return ret; ret = i2c_smbus_write_byte_data(client, MAX6697_REG_OVERT_MASK, - MAX6697_MAP_BITS(pdata->over_temperature_mask)); + MAX6697_OVERT_MAP_BITS(pdata->over_temperature_mask)); if (ret < 0) return ret; -- 2.25.1