From: David Jander <david@protonic.nl>
To: Marc Kleine-Budde <mkl@pengutronix.de>
Cc: linux-can@vger.kernel.org
Subject: Re: RFC: [PATCH v2] can: flexcan: Implement errata ERR005829
Date: Tue, 16 Sep 2014 14:28:46 +0200 [thread overview]
Message-ID: <20140916142846.2ae8335c@archvile> (raw)
In-Reply-To: <5418238B.6010600@pengutronix.de>
On Tue, 16 Sep 2014 13:48:27 +0200
Marc Kleine-Budde <mkl@pengutronix.de> wrote:
> On 09/04/2014 10:44 AM, David Jander wrote:
> >> Looks good. Can you please prepare a more detailed commit message.
> >
> > Ok, I will briefly describe the workaround. I first thought that
> > mentioning the errata number would be sufficient, since it is freely
> > available documentation from Freescale.
> >
> > Just in case you want to paste it into your version of the patch, here it
> > goes:
> >
> > ERR005829: FlexCAN: FlexCAN does not transmit a message that is enabled to
> > be transmitted in a specific moment during the arbitration process.
> >
> > Workaround: The workaround consists of two extra steps after setting up a
> > message for transmission:
> >
> > Step 8: Reserve the first valid mailbox as an inactive mailbox
> > (CODE=0b1000). If RX FIFO is disabled, this mailbox must be message buffer
> > 0. Otherwise, the first valid mailbox can be found using the "RX FIFO
> > filters" table in the FlexCAN chapter of the chip reference manual.
> >
> > Step 9: Write twice INACTIVE code (0b1000) into the first valid mailbox.
>
> Thanks, added the description to the patch.
>
> >
> >>> drivers/net/can/flexcan.c | 10 +++++++++-
> >>> 1 file changed, 9 insertions(+), 1 deletion(-)
> >>>
> >>> diff --git a/drivers/net/can/flexcan.c b/drivers/net/can/flexcan.c
> >>> index 0bcbb96..d9d0ecb 100644
> >>> --- a/drivers/net/can/flexcan.c
> >>> +++ b/drivers/net/can/flexcan.c
> >>> @@ -125,7 +125,9 @@
> >>> FLEXCAN_ESR_BOFF_INT | FLEXCAN_ESR_ERR_INT)
> >>>
> >>> /* FLEXCAN interrupt flag register (IFLAG) bits */
> >>> -#define FLEXCAN_TX_BUF_ID 8
> >>> +/* Errata ERR005829 step7: Reserve first valid MB */
> >>> +#define FLEXCAN_FIRST_VALID_MB 8
> >>> +#define FLEXCAN_TX_BUF_ID 9
> >>> #define FLEXCAN_IFLAG_BUF(x) BIT(x)
> >>> #define FLEXCAN_IFLAG_RX_FIFO_OVERFLOW BIT(7)
> >>> #define FLEXCAN_IFLAG_RX_FIFO_WARN BIT(6)
> >>> @@ -428,6 +430,12 @@ static int flexcan_start_xmit(struct sk_buff *skb,
> >>> struct net_device *dev) flexcan_write(can_id,
> >>> ®s->cantxfg[FLEXCAN_TX_BUF_ID].can_id); flexcan_write(ctrl,
> >>> ®s->cantxfg[FLEXCAN_TX_BUF_ID].can_ctrl);
> >>
> >> However, I don't want to write unconditionally two times here, so I've
> >> added a runtime decision with a quirk for this. I'll send an updated
> >> patch.
> >
> > Please note that if the silicon bug didn't exist, none of the two writes
> > would be necessary.
> > Once you create a quirk for this, how are we supposed to know which
> > versions need this quirk, and which don't? Can we trust the existence of
> > erratas for the different i.MX Soc's, and should we just go and check them
> > all?
>
> I had a patch with the quirk, but I removed it, as you suggested, just
> in case.
I did not directly suggest to NOT use a quirk, I only had some concerns. In
the meantime I have checked a few of the SoCs for erratas, and found this
errata only for i.MX6 and Vybrid VF6xx, which makes me suspect this problem is
unique to IP version 10 (if the IP version table at the beginning of the
source-code is to be trusted).
OTOH, if you decided to leave the unconditional writes in there, I am fine
with that. I don't think they do much harm.
Is it time to revisit my other patch(es) yet? If so, from where should I pull
the base?
Best regards,
--
David Jander
Protonic Holland.
next prev parent reply other threads:[~2014-09-16 12:28 UTC|newest]
Thread overview: 6+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-09-03 14:47 RFC: [PATCH v2] can: flexcan: Implement errata ERR005829 David Jander
[not found] ` <54081940.6060402@pengutronix.de>
[not found] ` <20140904104440.5766d764@archvile>
2014-09-16 11:48 ` Marc Kleine-Budde
2014-09-16 12:28 ` David Jander [this message]
2014-09-16 12:58 ` Marc Kleine-Budde
2014-09-16 14:29 ` Marc Kleine-Budde
2014-09-18 13:50 ` David Jander
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20140916142846.2ae8335c@archvile \
--to=david@protonic.nl \
--cc=linux-can@vger.kernel.org \
--cc=mkl@pengutronix.de \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).