serial: sc16is7xx: Put IOControl register into regmap_volatile
authorHui Wang <hui.wang@canonical.com>
Mon, 24 Jul 2023 03:47:27 +0000 (11:47 +0800)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Fri, 8 Dec 2023 07:51:16 +0000 (08:51 +0100)
commit 77a82cebf0eb023203b4cb2235cab75afc77cccf upstream.

According to the IOControl register bits description in the page 31 of
the product datasheet, we know the bit 3 of IOControl register is
softreset, this bit will self-clearing once the reset finish.

In the probe, the softreset bit is set, and when we read this register
from debugfs/regmap interface, we found the softreset bit is still
setting, this confused us for a while. Finally we found this register
is cached, to read the real value from register, we could put it
into the regmap_volatile().

Signed-off-by: Hui Wang <hui.wang@canonical.com>
Link: https://lore.kernel.org/r/20230724034727.17335-1-hui.wang@canonical.com
Cc: Hugo Villeneuve <hugo@hugovil.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/tty/serial/sc16is7xx.c

index 21145eb..0ee3acf 100644 (file)
@@ -486,6 +486,7 @@ static bool sc16is7xx_regmap_volatile(struct device *dev, unsigned int reg)
        case SC16IS7XX_TXLVL_REG:
        case SC16IS7XX_RXLVL_REG:
        case SC16IS7XX_IOSTATE_REG:
+       case SC16IS7XX_IOCONTROL_REG:
                return true;
        default:
                break;