staging: iio: adc: ad7280a: use crc8.h API to build crc table
authorSlawomir Stepien <sst@poczta.fm>
Thu, 18 Oct 2018 18:59:33 +0000 (20:59 +0200)
committerJonathan Cameron <Jonathan.Cameron@huawei.com>
Sun, 21 Oct 2018 13:30:56 +0000 (14:30 +0100)
The custom build function ad7280_crc8_build_table is not needed. The
crc8_populate_msb function from linux/crc8.h will build the same crc
table.

Signed-off-by: Slawomir Stepien <sst@poczta.fm>
Acked-by: Lars-Peter Clausen <lars@metafoo.de>
Signed-off-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>
drivers/staging/iio/adc/Kconfig
drivers/staging/iio/adc/ad7280a.c

index 9d3062a..fc23059 100644 (file)
@@ -73,6 +73,7 @@ config AD7192
 config AD7280
        tristate "Analog Devices AD7280A Lithium Ion Battery Monitoring System"
        depends on SPI
+       select CRC8
        help
          Say yes here to build support for Analog Devices AD7280A
          Lithium Ion Battery Monitoring System.
index cbeb524..7161998 100644 (file)
@@ -6,6 +6,7 @@
  * Licensed under the GPL-2.
  */
 
+#include <linux/crc8.h>
 #include <linux/device.h>
 #include <linux/kernel.h>
 #include <linux/slab.h>
@@ -121,8 +122,6 @@ static unsigned int ad7280a_devaddr(unsigned int addr)
  * P(x) = x^8 + x^5 + x^3 + x^2 + x^1 + x^0 = 0b100101111 => 0x2F
  */
 #define POLYNOM                0x2F
-#define POLYNOM_ORDER  8
-#define HIGHBIT                (1 << (POLYNOM_ORDER - 1))
 
 struct ad7280_state {
        struct spi_device               *spi;
@@ -131,7 +130,7 @@ struct ad7280_state {
        int                             slave_num;
        int                             scan_cnt;
        int                             readback_delay_us;
-       unsigned char                   crc_tab[256];
+       unsigned char                   crc_tab[CRC8_TABLE_SIZE];
        unsigned char                   ctrl_hb;
        unsigned char                   ctrl_lb;
        unsigned char                   cell_threshhigh;
@@ -144,23 +143,6 @@ struct ad7280_state {
        __be32                          buf[2] ____cacheline_aligned;
 };
 
-static void ad7280_crc8_build_table(unsigned char *crc_tab)
-{
-       unsigned char bit, crc;
-       int cnt, i;
-
-       for (cnt = 0; cnt < 256; cnt++) {
-               crc = cnt;
-               for (i = 0; i < 8; i++) {
-                       bit = crc & HIGHBIT;
-                       crc <<= 1;
-                       if (bit)
-                               crc ^= POLYNOM;
-               }
-               crc_tab[cnt] = crc;
-       }
-}
-
 static unsigned char ad7280_calc_crc8(unsigned char *crc_tab, unsigned int val)
 {
        unsigned char crc;
@@ -866,7 +848,7 @@ static int ad7280_probe(struct spi_device *spi)
        if (!pdata)
                pdata = &ad7793_default_pdata;
 
-       ad7280_crc8_build_table(st->crc_tab);
+       crc8_populate_msb(st->crc_tab, POLYNOM);
 
        st->spi->max_speed_hz = AD7280A_MAX_SPI_CLK_HZ;
        st->spi->mode = SPI_MODE_1;