can: tcan4x5x: Fix use of register error status mask
[ Upstream commit 67727a17a6b375d68fe569b77e6516b034b834c0 ] TCAN4X5X_ERROR_STATUS is not a status register that needs clearing during interrupt handling. Instead this is a masking register that masks error interrupts. Writing TCAN4X5X_CLEAR_ALL_INT to this register effectively masks everything. Rename the register and mask all error interrupts only once by writing to the register in tcan4x5x_init. Fixes: 5443c226ba91 ("can: tcan4x5x: Add tcan4x5x driver to the kernel") Signed-off-by: Markus Schneider-Pargmann <msp@baylibre.com> Link: https://lore.kernel.org/all/20221206115728.1056014-10-msp@baylibre.com Signed-off-by: Marc Kleine-Budde <mkl@pengutronix.de> Signed-off-by: Sasha Levin <sashal@kernel.org>
This commit is contained in:
parent
d50092f662
commit
882bad40a0
@ -10,7 +10,7 @@
|
||||
#define TCAN4X5X_DEV_ID1 0x04
|
||||
#define TCAN4X5X_REV 0x08
|
||||
#define TCAN4X5X_STATUS 0x0C
|
||||
#define TCAN4X5X_ERROR_STATUS 0x10
|
||||
#define TCAN4X5X_ERROR_STATUS_MASK 0x10
|
||||
#define TCAN4X5X_CONTROL 0x14
|
||||
|
||||
#define TCAN4X5X_CONFIG 0x800
|
||||
@ -204,12 +204,7 @@ static int tcan4x5x_clear_interrupts(struct m_can_classdev *cdev)
|
||||
if (ret)
|
||||
return ret;
|
||||
|
||||
ret = tcan4x5x_write_tcan_reg(cdev, TCAN4X5X_INT_FLAGS,
|
||||
TCAN4X5X_CLEAR_ALL_INT);
|
||||
if (ret)
|
||||
return ret;
|
||||
|
||||
return tcan4x5x_write_tcan_reg(cdev, TCAN4X5X_ERROR_STATUS,
|
||||
return tcan4x5x_write_tcan_reg(cdev, TCAN4X5X_INT_FLAGS,
|
||||
TCAN4X5X_CLEAR_ALL_INT);
|
||||
}
|
||||
|
||||
@ -229,6 +224,11 @@ static int tcan4x5x_init(struct m_can_classdev *cdev)
|
||||
if (ret)
|
||||
return ret;
|
||||
|
||||
ret = tcan4x5x_write_tcan_reg(cdev, TCAN4X5X_ERROR_STATUS_MASK,
|
||||
TCAN4X5X_CLEAR_ALL_INT);
|
||||
if (ret)
|
||||
return ret;
|
||||
|
||||
ret = regmap_update_bits(tcan4x5x->regmap, TCAN4X5X_CONFIG,
|
||||
TCAN4X5X_MODE_SEL_MASK, TCAN4X5X_MODE_NORMAL);
|
||||
if (ret)
|
||||
|
Loading…
x
Reference in New Issue
Block a user