pinctrl: cy8c95x0: Avoid accessing reserved registers
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: 71e4001a04
("pinctrl: pinctrl-cy8c95x0: Fix regcache")
Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
Link: https://lore.kernel.org/20250203131506.3318201-3-andriy.shevchenko@linux.intel.com
Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
This commit is contained in:
parent
6f36f103cf
commit
3fbe3fe287
1 changed files with 10 additions and 6 deletions
|
@ -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;
|
||||
|
|
Loading…
Add table
Reference in a new issue