RE: [net-next 6/6] can: mcp251xfd: mcp251xfd_regmap_crc_read(): work around broken CRC on TBC register

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi Marc,

> Picking up this old thread....
> 
> Thomas, can I have your Signed-off-by for this patch?
> 
> Marc

> > diff --git a/drivers/net/can/spi/mcp251xfd/mcp251xfd-regmap.c
> b/drivers/net/can/spi/mcp251xfd/mcp251xfd-regmap.c
> > index 297491516a26..e5bc897f37e8 100644
> > --- a/drivers/net/can/spi/mcp251xfd/mcp251xfd-regmap.c
> > +++ b/drivers/net/can/spi/mcp251xfd/mcp251xfd-regmap.c
> > @@ -332,12 +332,10 @@ mcp251xfd_regmap_crc_read(void *context,
> >                  *
> >                  * If the highest bit in the lowest byte is flipped
> >                  * the transferred CRC matches the calculated one. We
> > -                * assume for now the CRC calculation in the chip
> > -                * works on wrong data and the transferred data is
> > -                * correct.
> > +                * assume for now the CRC operates on the correct data.
> >                  */
> >                 if (reg == MCP251XFD_REG_TBC &&
> > -                   (buf_rx->data[0] == 0x0 || buf_rx->data[0] == 0x80)) {
> > +                   ((buf_rx->data[0] & 0xF8) == 0x0 || (buf_rx->data[0] & 0xF8) ==
> 0x80)) {
> >                         /* Flip highest bit in lowest byte of le32 */
> >                         buf_rx->data[0] ^= 0x80;
> >
> > @@ -347,10 +345,8 @@ mcp251xfd_regmap_crc_read(void *context,
> >                                                                   val_len);
> >                         if (!err) {
> >                                 /* If CRC is now correct, assume
> > -                                * transferred data was OK, flip bit
> > -                                * back to original value.
> > +                                * flipped data was OK.
> >                                  */
> > -                               buf_rx->data[0] ^= 0x80;
> >                                 goto out;
> >                         }
> >                 }
> >

Signed-off-by: Thomas Kopp <thomas.kopp@xxxxxxxxxxxxx>

> The mcp2517fd errata says the transmitted data is okay, but the CRC is
> calculated on wrong data:

Yes, will be updated.

Best Regards,
Thomas





[Index of Archives]     [Automotive Discussions]     [Linux ARM Kernel]     [Linux ARM]     [Linux Omap]     [Fedora ARM]     [IETF Annouce]     [Security]     [Bugtraq]     [Linux]     [Linux OMAP]     [Linux MIPS]     [eCos]     [Asterisk Internet PBX]     [Linux API]     [CAN Bus]

  Powered by Linux