All of lore.kernel.org
 help / color / mirror / Atom feed
From: Marc Kleine-Budde <mkl@pengutronix.de>
To: Tim Harvey <tharvey@gateworks.com>
Cc: Gerhard Bertelsmann <info@gerhard-bertelsmann.de>,
	linux-can@vger.kernel.org
Subject: Re: [PATCH] can: mcp251x: fix support for half duplex SPI host controllers
Date: Wed, 31 Mar 2021 09:14:27 +0200	[thread overview]
Message-ID: <20210331071427.w4bplxt2hoiduho2@pengutronix.de> (raw)
In-Reply-To: <CAJ+vNU0w2faqmW0MOA9FQD8=vxpJH1Lc8c0BMcAVKGNq1vNjjg@mail.gmail.com>

[-- Attachment #1: Type: text/plain, Size: 2063 bytes --]

On 30.03.2021 14:06:03, Tim Harvey wrote:
> On Tue, Mar 30, 2021 at 3:02 AM Marc Kleine-Budde <mkl@pengutronix.de> wrote:
> >
> > Some SPI host controllers do not support full-duplex SPI transfers.
> >
> > The function mcp251x_spi_trans() does a full duplex transfer. It is
> > used in several places in the driver, where a TX half duplex transfer
> > is sufficient.
> >
> > To fix support for half duplex SPI host controllers, this patch
> > introduces a new function mcp251x_spi_write() and changes all callers
> > that do a TX half duplex transfer to use mcp251x_spi_write().

> So was the issue being resolved here that there was another SPI host
> controller that wasn't advertising that it was half duplex only

I don't know which SPI host controller Gerhard uses, but I assume it has
half duplex set, as the driver probe fails with:

| [  112.226164] mcp251x spi0.1: spi transfer failed: ret = -22

The -22 is returned by the SPI framework if you have a half duplex
controller and a transfer with both TX and RX buffer set. This is the
case in the mcp251x_spi_trans() function.

> or was something else wrong with e0e25001d088 ("can: mcp251x: add
> support for half duplex controllers")?

Your patch only converted the SPI read path to use half duplex
transfers. My patch also converts the SPI write path.

If your half duplex controller works without that patch, the controller
driver doesn't advertise correctly that it is half duplex only. If the
hardware is indeed half duplex only, better send a patch that sets the
half duplex flag. If the hardware support full duplex, but the driver
somehow doesn't implement it correctly, so that it implements half
duplex only you should at least drop a note on the SPI mailing list.

Can you test this patch and give me a Tested-by?

regards,
Marc

--
Pengutronix e.K.                 | Marc Kleine-Budde           |
Embedded Linux                   | https://www.pengutronix.de  |
Vertretung West/Dortmund         | Phone: +49-231-2826-924     |
Amtsgericht Hildesheim, HRA 2686 | Fax:   +49-5121-206917-5555 |

[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 488 bytes --]

  reply	other threads:[~2021-03-31  7:15 UTC|newest]

Thread overview: 6+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-03-30 10:02 [PATCH] can: mcp251x: fix support for half duplex SPI host controllers Marc Kleine-Budde
2021-03-30 21:06 ` Tim Harvey
2021-03-31  7:14   ` Marc Kleine-Budde [this message]
2021-03-31 13:45     ` Gerhard Bertelsmann
2021-03-31 14:54     ` Tim Harvey
2021-03-31 15:05       ` Marc Kleine-Budde

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=20210331071427.w4bplxt2hoiduho2@pengutronix.de \
    --to=mkl@pengutronix.de \
    --cc=info@gerhard-bertelsmann.de \
    --cc=linux-can@vger.kernel.org \
    --cc=tharvey@gateworks.com \
    /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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.