All of lore.kernel.org
 help / color / mirror / Atom feed
From: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
To: Andy Shevchenko <andriy.shevchenko@linux.intel.com>,
	linux-gpio@vger.kernel.org, linux-kernel@vger.kernel.org
Cc: Patrick Rudolph <patrick.rudolph@9elements.com>,
	Linus Walleij <linus.walleij@linaro.org>
Subject: [PATCH v1 06/16] pinctrl: cy8c95x0: Avoid accessing reserved registers
Date: Fri, 17 Jan 2025 16:21:50 +0200	[thread overview]
Message-ID: <20250117142304.596106-7-andriy.shevchenko@linux.intel.com> (raw)
In-Reply-To: <20250117142304.596106-1-andriy.shevchenko@linux.intel.com>

The checks for vrtual registers in the cy8c95x0_readable_register()
and cy8c95x0_writeable_register() are not aligned and broken.

Fix that by explicitly avoiding reserved registers to be accessed.

Fixes: 71e4001a0455 ("pinctrl: pinctrl-cy8c95x0: Fix regcache")
Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
---
 drivers/pinctrl/pinctrl-cy8c95x0.c | 16 ++++++++++------
 1 file changed, 10 insertions(+), 6 deletions(-)

diff --git a/drivers/pinctrl/pinctrl-cy8c95x0.c b/drivers/pinctrl/pinctrl-cy8c95x0.c
index e98eba17cd13..970b6842b05b 100644
--- a/drivers/pinctrl/pinctrl-cy8c95x0.c
+++ b/drivers/pinctrl/pinctrl-cy8c95x0.c
@@ -328,14 +328,14 @@ static int cypress_get_pin_mask(struct cy8c95x0_pinctrl *chip, unsigned int pin)
 static bool cy8c95x0_readable_register(struct device *dev, unsigned int reg)
 {
 	/*
-	 * Only 12 registers are present per port (see Table 6 in the
-	 * datasheet).
+	 * Only 12 registers are present per port (see Table 6 in the datasheet).
 	 */
-	if (reg >= CY8C95X0_VIRTUAL && (reg % MUXED_STRIDE) < 12)
-		return true;
+	if (reg >= CY8C95X0_VIRTUAL && (reg % MUXED_STRIDE) >= 12)
+		return false;
 
 	switch (reg) {
 	case 0x24 ... 0x27:
+	case 0x31 ... 0x3f:
 		return false;
 	default:
 		return true;
@@ -344,8 +344,11 @@ static bool cy8c95x0_readable_register(struct device *dev, unsigned int reg)
 
 static bool cy8c95x0_writeable_register(struct device *dev, unsigned int reg)
 {
-	if (reg >= CY8C95X0_VIRTUAL)
-		return true;
+	/*
+	 * Only 12 registers are present per port (see Table 6 in the datasheet).
+	 */
+	if (reg >= CY8C95X0_VIRTUAL && (reg % MUXED_STRIDE) >= 12)
+		return false;
 
 	switch (reg) {
 	case CY8C95X0_INPUT_(0) ... CY8C95X0_INPUT_(7):
@@ -353,6 +356,7 @@ static bool cy8c95x0_writeable_register(struct device *dev, unsigned int reg)
 	case CY8C95X0_DEVID:
 		return false;
 	case 0x24 ... 0x27:
+	case 0x31 ... 0x3f:
 		return false;
 	default:
 		return true;
-- 
2.43.0.rc1.1336.g36b5255a03ac


  parent reply	other threads:[~2025-01-17 14:23 UTC|newest]

Thread overview: 24+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2025-01-17 14:21 [PATCH v1 00/16] pinctrl: cy8c95x0: Bugfixes and cleanups Andy Shevchenko
2025-01-17 14:21 ` [PATCH v1 01/16] pinctrl: cy8c95x0: Respect IRQ trigger settings from firmware Andy Shevchenko
2025-01-27 10:03   ` Linus Walleij
2025-02-03 12:13     ` Andy Shevchenko
2025-01-17 14:21 ` [PATCH v1 02/16] pinctrl: cy8c95x0: Rename PWMSEL to SELPWM Andy Shevchenko
2025-01-17 14:21 ` [PATCH v1 03/16] pinctrl: cy8c95x0: Enable regmap locking for debug Andy Shevchenko
2025-01-17 14:21 ` [PATCH v1 04/16] pinctrl: cy8c95x0: Fix off-by-one in the regmap range settings Andy Shevchenko
2025-01-17 14:21 ` [PATCH v1 05/16] pinctrl: cy8c95x0: Remove incorrectly set fields in regmap configuration Andy Shevchenko
2025-01-17 15:01   ` Patrick Rudolph
2025-01-17 15:13     ` Andy Shevchenko
2025-01-17 15:15       ` Andy Shevchenko
2025-01-17 16:47         ` Andy Shevchenko
2025-02-03  9:21         ` Andy Shevchenko
2025-01-17 14:21 ` Andy Shevchenko [this message]
2025-01-17 14:21 ` [PATCH v1 07/16] pinctrl: cy8c95x0: Use better bitmap APIs where appropriate Andy Shevchenko
2025-01-17 14:21 ` [PATCH v1 08/16] pinctrl: cy8c95x0; Switch to use for_each_set_clump8() Andy Shevchenko
2025-01-17 14:21 ` [PATCH v1 09/16] pinctrl: cy8c95x0: Transform to cy8c95x0_regmap_read_bits() Andy Shevchenko
2025-01-17 14:21 ` [PATCH v1 10/16] pinctrl: cy8c95x0: Remove redundant check in cy8c95x0_regmap_update_bits_base() Andy Shevchenko
2025-01-17 14:21 ` [PATCH v1 11/16] pinctrl: cy8c95x0: Replace 'return ret' by 'return 0' in some cases Andy Shevchenko
2025-01-17 14:21 ` [PATCH v1 12/16] pinctrl: cy8c95x0: Initialise boolean variable with boolean values Andy Shevchenko
2025-01-17 14:21 ` [PATCH v1 13/16] pinctrl: cy8c95x0: Get rid of cy8c95x0_pinmux_direction() forward declaration Andy Shevchenko
2025-01-17 14:21 ` [PATCH v1 14/16] pinctrl: cy8c95x0: Drop unneeded casting Andy Shevchenko
2025-01-17 14:21 ` [PATCH v1 15/16] pinctrl: cy8c95x0: Separate EEPROM related register definitios Andy Shevchenko
2025-01-17 14:22 ` [PATCH v1 16/16] pinctrl: cy8c95x0: Fix comment style Andy Shevchenko

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20250117142304.596106-7-andriy.shevchenko@linux.intel.com \
    --to=andriy.shevchenko@linux.intel.com \
    --cc=linus.walleij@linaro.org \
    --cc=linux-gpio@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=patrick.rudolph@9elements.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.