Received: by 2002:a05:6a10:f3d0:0:0:0:0 with SMTP id a16csp2824512pxv; Mon, 12 Jul 2021 02:51:19 -0700 (PDT) X-Google-Smtp-Source: ABdhPJyFBqSnzaT36b7qzECcCOMENTLL3EdaZQdkigMNBxXPyiDWk92TAqbI7KKxQePXoqLX1n77 X-Received: by 2002:a05:6e02:1bc1:: with SMTP id x1mr3945277ilv.33.1626083478841; Mon, 12 Jul 2021 02:51:18 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1626083478; cv=none; d=google.com; s=arc-20160816; b=vdQV91cGfNf6R3nVjEMYc0rnzgDmKpnao1fFe7wE2v3anlDL7ccmqBq8xCJJn7XKjq GqacAXz01vJ9bpF1SVR51xgy47RxUrZ1G7hQIIyF9lYGMEpSsUnXQ3n63bm7z2T5HK7k SvmRK7BiQjHN7c+GHa7MJ1EzaqF9Hb7maMqcJVb2C5WPuXgN7sTbNvRC98ApLBWHB10m Fnob4SpPX4rsHDvd9U3WVmlDjlqhJUONRps+VBRVC6ydXkpEzO0vhy4OzPwFXq1x5TPX 4JBYpIrOFrzcO+Hg4IgFqt8blXGEw8nLjmXplrIq7kqxQGvarC++aOISlne5X9o+dCOp /dcA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :user-agent:references:in-reply-to:message-id:date:subject:cc:to :from:dkim-signature; bh=rpuYyJWKO/1app6K8cC7mI8Z5wpORvqcSsdVOLC8pLA=; b=PY4yOyf9lvIi8YzdZw/Fz4tR3Y3KKT9/Dcg/lC0hIyewx9iuAJ8ha9fILGGoNow5Fv 7LUwyRFhXOZ3BTYcQoUFg/aZ2qmaAxuJaM7C0D8JPovGEuM2hAjym89Uxxp2IZ9UWo11 HnxmGSM3AJPVfEw8gRqE2fFU1VhC6qoRRpl4BA3M85o8Y2rnfpQz5Ybv0xATBWkMUEHE unbPpwvElO24fbAJSJhIsdQKCW80bQU6ZGOlZMMA5TSHAUErQXe9k7m4lIa8xQWBpaTY oOl8y1+RHtsjgHRk18yaslrc8R9GFkNy/Eio3OAKpkYpDGGzkmyzjrRsnI5sedrGpJQy Kv0g== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@linuxfoundation.org header.s=korg header.b="WclbI/L5"; 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; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linuxfoundation.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id 12si18136240ilz.15.2021.07.12.02.51.07; Mon, 12 Jul 2021 02:51:18 -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=@linuxfoundation.org header.s=korg header.b="WclbI/L5"; 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; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linuxfoundation.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S237534AbhGLGqN (ORCPT + 99 others); Mon, 12 Jul 2021 02:46:13 -0400 Received: from mail.kernel.org ([198.145.29.99]:54296 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S237548AbhGLGeg (ORCPT ); Mon, 12 Jul 2021 02:34:36 -0400 Received: by mail.kernel.org (Postfix) with ESMTPSA id 44A6961156; Mon, 12 Jul 2021 06:30:45 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=linuxfoundation.org; s=korg; t=1626071445; bh=oy3KLG7O4RGLwE+4QEYQG92pZCKMBsd6z1Ea1INhmY4=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=WclbI/L5MwFAzJn0H07EKbQw6S1znMrKJakMGIJtmr0r7zbeLFjBUoKGO5JJyELEy irk5m5s0KwYHvdVra7xUhOIldnZQ0mt/vHa8NMqZQR9pEaGD0xhmNOTm2tMoxDY7xI YWusJfWIJjEWO46fZICs16ik6SqsnJWCvnXM+K0U= From: Greg Kroah-Hartman To: linux-kernel@vger.kernel.org Cc: Greg Kroah-Hartman , stable@vger.kernel.org, Oliver Lang , Andy Shevchenko , Marc Kleine-Budde , Stable@vger.kernel.org, Jonathan Cameron , Nikita Travkin Subject: [PATCH 5.10 074/593] iio: ltr501: mark register holding upper 8 bits of ALS_DATA{0,1} and PS_DATA as volatile, too Date: Mon, 12 Jul 2021 08:03:54 +0200 Message-Id: <20210712060851.277965899@linuxfoundation.org> X-Mailer: git-send-email 2.32.0 In-Reply-To: <20210712060843.180606720@linuxfoundation.org> References: <20210712060843.180606720@linuxfoundation.org> User-Agent: quilt/0.66 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org From: Marc Kleine-Budde commit 2ac0b029a04b673ce83b5089368f467c5dca720c upstream. The regmap is configured for 8 bit registers, uses a RB-Tree cache and marks several registers as volatile (i.e. do not cache). The ALS and PS data registers in the chip are 16 bit wide and spans two regmap registers. In the current driver only the base register is marked as volatile, resulting in the upper register only read once. Further the data sheet notes: | When the I2C read operation starts, all four ALS data registers are | locked until the I2C read operation of register 0x8B is completed. Which results in the registers never update after the 2nd read. This patch fixes the problem by marking the upper 8 bits of the ALS and PS registers as volatile, too. Fixes: 2f2c96338afc ("iio: ltr501: Add regmap support.") Reported-by: Oliver Lang Reviewed-by: Andy Shevchenko Signed-off-by: Marc Kleine-Budde Tested-by: Nikita Travkin # ltr559 Link: https://lore.kernel.org/r/20210610134619.2101372-2-mkl@pengutronix.de Cc: Signed-off-by: Jonathan Cameron Signed-off-by: Greg Kroah-Hartman --- drivers/iio/light/ltr501.c | 6 ++++++ 1 file changed, 6 insertions(+) --- a/drivers/iio/light/ltr501.c +++ b/drivers/iio/light/ltr501.c @@ -32,9 +32,12 @@ #define LTR501_PART_ID 0x86 #define LTR501_MANUFAC_ID 0x87 #define LTR501_ALS_DATA1 0x88 /* 16-bit, little endian */ +#define LTR501_ALS_DATA1_UPPER 0x89 /* upper 8 bits of LTR501_ALS_DATA1 */ #define LTR501_ALS_DATA0 0x8a /* 16-bit, little endian */ +#define LTR501_ALS_DATA0_UPPER 0x8b /* upper 8 bits of LTR501_ALS_DATA0 */ #define LTR501_ALS_PS_STATUS 0x8c #define LTR501_PS_DATA 0x8d /* 16-bit, little endian */ +#define LTR501_PS_DATA_UPPER 0x8e /* upper 8 bits of LTR501_PS_DATA */ #define LTR501_INTR 0x8f /* output mode, polarity, mode */ #define LTR501_PS_THRESH_UP 0x90 /* 11 bit, ps upper threshold */ #define LTR501_PS_THRESH_LOW 0x92 /* 11 bit, ps lower threshold */ @@ -1354,9 +1357,12 @@ static bool ltr501_is_volatile_reg(struc { switch (reg) { case LTR501_ALS_DATA1: + case LTR501_ALS_DATA1_UPPER: case LTR501_ALS_DATA0: + case LTR501_ALS_DATA0_UPPER: case LTR501_ALS_PS_STATUS: case LTR501_PS_DATA: + case LTR501_PS_DATA_UPPER: return true; default: return false;