Re: [PATCH] can: mcp251x: fix support for half duplex SPI host controllers

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

 



Am 2021-03-31 09:14, schrieb Marc Kleine-Budde:
On 30.03.2021 14:06:03, Tim Harvey wrote:
On Tue, Mar 30, 2021 at 3:02 AM Marc Kleine-Budde <mkl@xxxxxxxxxxxxxx> 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.

I'm using an Onion Omega2 board with MT7688 CPU. It uses MediaTek MT7621
SPI controller driver - spi-mt7621.c (5.10.26) with sets the flag to:

        master->flags = SPI_CONTROLLER_HALF_DUPLEX;

All Mediatek/Ralink SPI controller are only half duplex AFAIK.


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.

Without Marcs latest patch the MCP2515 didn't initialized correctly and
showed the error mentioned above (spi transfer failed).

Regards

Gerd



[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