This patch factors out the crc check into a separate function. This is
preparation for the next patch.

Link: https://lore.kernel.org/r/20210406110617.1865592-4-...@pengutronix.de
Cc: Manivannan Sadhasivam <m...@kernel.org>
Cc: Thomas Kopp <thomas.k...@microchip.com>
Signed-off-by: Marc Kleine-Budde <m...@pengutronix.de>
---
 .../net/can/spi/mcp251xfd/mcp251xfd-regmap.c  | 30 ++++++++++++-------
 1 file changed, 20 insertions(+), 10 deletions(-)

diff --git a/drivers/net/can/spi/mcp251xfd/mcp251xfd-regmap.c 
b/drivers/net/can/spi/mcp251xfd/mcp251xfd-regmap.c
index 314f868b3465..35557ac43c03 100644
--- a/drivers/net/can/spi/mcp251xfd/mcp251xfd-regmap.c
+++ b/drivers/net/can/spi/mcp251xfd/mcp251xfd-regmap.c
@@ -232,13 +232,31 @@ mcp251xfd_regmap_crc_write(void *context,
                                                 count - data_offset);
 }
 
+static int
+mcp251xfd_regmap_crc_read_check_crc(const struct mcp251xfd_map_buf_crc * const 
buf_rx,
+                                   const struct mcp251xfd_map_buf_crc * const 
buf_tx,
+                                   unsigned int data_len)
+{
+       u16 crc_received, crc_calculated;
+
+       crc_received = get_unaligned_be16(buf_rx->data + data_len);
+       crc_calculated = mcp251xfd_crc16_compute2(&buf_tx->cmd,
+                                                 sizeof(buf_tx->cmd),
+                                                 buf_rx->data,
+                                                 data_len);
+       if (crc_received != crc_calculated)
+               return -EBADMSG;
+
+       return 0;
+}
+
+
 static int
 mcp251xfd_regmap_crc_read_one(struct mcp251xfd_priv *priv,
                              struct spi_message *msg, unsigned int data_len)
 {
        const struct mcp251xfd_map_buf_crc *buf_rx = priv->map_buf_crc_rx;
        const struct mcp251xfd_map_buf_crc *buf_tx = priv->map_buf_crc_tx;
-       u16 crc_received, crc_calculated;
        int err;
 
        BUILD_BUG_ON(sizeof(buf_rx->cmd) != sizeof(__be16) + sizeof(u8));
@@ -248,15 +266,7 @@ mcp251xfd_regmap_crc_read_one(struct mcp251xfd_priv *priv,
        if (err)
                return err;
 
-       crc_received = get_unaligned_be16(buf_rx->data + data_len);
-       crc_calculated = mcp251xfd_crc16_compute2(&buf_tx->cmd,
-                                                 sizeof(buf_tx->cmd),
-                                                 buf_rx->data,
-                                                 data_len);
-       if (crc_received != crc_calculated)
-               return -EBADMSG;
-
-       return 0;
+       return mcp251xfd_regmap_crc_read_check_crc(buf_rx, buf_tx, data_len);
 }
 
 static int
-- 
2.30.2


Reply via email to