public inbox for linux-kernel@vger.kernel.org
 help / color / mirror / Atom feed
From: Mark Brown <broonie@kernel.org>
To: William Zhang <william.zhang@broadcom.com>
Cc: Linux SPI List <linux-spi@vger.kernel.org>,
	Broadcom Kernel List <bcm-kernel-feedback-list@broadcom.com>,
	anand.gore@broadcom.com, tomer.yacoby@broadcom.com,
	dan.beygelman@broadcom.com, joel.peshkin@broadcom.com,
	f.fainelli@gmail.com, jonas.gorski@gmail.com,
	kursad.oney@broadcom.com, dregan@mail.com,
	linux-kernel@vger.kernel.org
Subject: Re: [PATCH 10/16] spi: bcm63xx-hsspi: Make dummy cs workaround as an option
Date: Thu, 12 Jan 2023 18:08:08 +0000	[thread overview]
Message-ID: <Y8BMiOvbjncXK4RO@sirena.org.uk> (raw)
In-Reply-To: <20230106200809.330769-11-william.zhang@broadcom.com>

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

On Fri, Jan 06, 2023 at 12:08:02PM -0800, William Zhang wrote:

> Due to the controller limitation to keep the chip select low during the
> bus idle time between the transfer, a dummy cs workaround was used when
> this driver was first upstreamed to the kernel.
> 
> The workaround picks dummy_cs as !actual_cs and usually cs is 0 and
> dummy cs is 1. But this does not work out in all the situations as
> customer reported issues for their board design. Due to SPI block design
> constrain, the controller works in different mode internally depending
> on the clock. When clock is 30MHz or above, controller works in faster
> mode and cs 1 signal is used internally as feedback from the pad. So cs
> 1 pin must be brought out and configured as chip select function in
> pinmux. When clock is below 30MHz, only cs 0 pin is used. In summary
> when clock is below 30MHz, the workaround always works as only cs 0 is
> involved. For clock faster than 30MHz, it require cs1 pin used in the
> board design and configured as chip selection function.

> In a typical usage of SPI flash on cs 0 that normally runs at 100MHz,
> cs 1 pin must be used in the board design but this is not always the
> case for many customer boards.

> For voice daughtercard usage,  the SoC alway uses internal cs 7 for
> voice card SPI control. Then it requires cs 0 pin as the dummy cs but
> board with voice design may not use cs 0 pin at all.

So I think what this is trying to say is that operation over 30MHz with
the existing workaround requires that the board be designed to bring out
the chip select used as the dummy as a physical chip select (or
potentially it has to be the actual chip select for the device?) but
that likely won't have been done?  And potentially this only works if CS
1 is the one brought out?  I'm unclear if CS 1 is just the most common
dummy chip select or if there's something else going on here.

> The controller actually has a prepend feature that can combine multiple
> SPI transfers in a SPI message into one single transfer when the
> transfers meet certain requirements. So there is no need for keeping cs
> low when the message only has one transfer. Most of the SPI devices
> including SPI NOR, SPI NAND flash, Broadcom voice card and etc can use
> this feature without the dummy cs workaround.

> This patch makes the dummy cs workaround as an option based on the
> dts flag brcm,use-cs-workaround. By default dummy cs workaround is
> hard coded to enable. We will use the prepend feature and disable this
> workaround as default in the next patch of this series unless this flag
> is set in dts.

...and based on your other comments I gather it's difficult to disable
the workaround per message?  I'm also guessing that the overhead from
always doing full duplex transfers is noticable so it's better to try
the workaround.

I wonder if we can't do this by selecting the workaround based on the
configured device speed.  If the device is configured to use more than
30MHz then disable the workaround, if it's set to lower then use it.  In
practice most devices don't change their speed after setup, and the
driver could check for and handle that case I guess (eg, limit the speed
configured if the workaround has been activated or rewrite the message
to a single transfer if neded).  That would be less error prone for
users, there wouldn't be any possibility of them setting this flag
incorrectly.

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

  reply	other threads:[~2023-01-12 18:37 UTC|newest]

Thread overview: 76+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2023-01-06 20:07 [PATCH 00/16] spi: bcm63xx-hsspi: driver and doc updates William Zhang
2023-01-06 20:07 ` [PATCH 01/16] dt-bindings: spi: Convert bcm63xx-hsspi bindings to json-schema William Zhang
2023-01-07 15:18   ` Rob Herring
2023-01-07 15:32   ` Krzysztof Kozlowski
2023-01-09  7:52     ` William Zhang
2023-01-09  8:48       ` Krzysztof Kozlowski
2023-01-06 20:07 ` [PATCH 02/16] dt-bindings: spi: Add bcmbca-hsspi controller support William Zhang
2023-01-08 14:51   ` Krzysztof Kozlowski
2023-01-09  8:27     ` William Zhang
2023-01-09  8:56       ` Krzysztof Kozlowski
2023-01-09 19:13         ` William Zhang
2023-01-10  8:40           ` Krzysztof Kozlowski
2023-01-10 22:18             ` Florian Fainelli
2023-01-11  1:08               ` William Zhang
2023-01-11  9:02               ` Krzysztof Kozlowski
2023-01-11 18:04                 ` William Zhang
2023-01-11 18:12                   ` Krzysztof Kozlowski
2023-01-11 18:44                     ` William Zhang
2023-01-12  8:21                       ` Krzysztof Kozlowski
2023-01-12 19:50                         ` William Zhang
2023-01-13  7:41                           ` Krzysztof Kozlowski
2023-01-14  3:17                             ` William Zhang
2023-01-15 14:31                               ` Krzysztof Kozlowski
2023-01-11  0:59             ` William Zhang
2023-01-11  9:01               ` Krzysztof Kozlowski
2023-01-06 20:07 ` [PATCH 03/16] dt-bindings: spi: Add spi peripheral specific property William Zhang
2023-01-06 21:14   ` Mark Brown
2023-01-07  3:27     ` William Zhang
2023-01-07 15:38       ` Rob Herring
2023-01-09  8:06         ` William Zhang
2023-01-09 19:19           ` Mark Brown
2023-01-09 20:18             ` William Zhang
2023-01-10 22:01               ` Mark Brown
2023-01-11 19:48                 ` William Zhang
2023-01-08 14:52   ` Krzysztof Kozlowski
2023-01-09  8:27     ` William Zhang
2023-01-06 20:07 ` [PATCH 04/16] ARM: dts: broadcom: bcmbca: Add spi controller node William Zhang
2023-01-06 20:07 ` [PATCH 05/16] arm64: " William Zhang
2023-01-06 20:07 ` [PATCH 06/16] spi: bcm63xx-hsspi: Endianness fix for ARM based SoC William Zhang
2023-01-07  7:44   ` kernel test robot
2023-01-07 21:21   ` kernel test robot
2023-01-07 21:52   ` kernel test robot
2023-01-07 23:23   ` kernel test robot
2023-01-11  6:33   ` kernel test robot
2023-01-06 20:07 ` [PATCH 07/16] spi: bcm63xx-hsspi: Add polling mode support William Zhang
2023-01-06 21:47   ` Mark Brown
2023-01-07  3:35     ` William Zhang
2023-01-09 19:06       ` Mark Brown
2023-01-09 20:10         ` William Zhang
2023-01-10 22:49           ` Mark Brown
2023-01-11 20:13             ` William Zhang
2023-01-11 22:41               ` Mark Brown
2023-01-11 22:57                 ` William Zhang
2023-01-06 20:08 ` [PATCH 08/16] spi: bcm63xx-hsspi: Handle cs_change correctly William Zhang
2023-01-06 20:08 ` [PATCH 09/16] spi: bcm63xx-hsspi: Fix multi-bit mode setting William Zhang
2023-01-06 20:08 ` [PATCH 10/16] spi: bcm63xx-hsspi: Make dummy cs workaround as an option William Zhang
2023-01-12 18:08   ` Mark Brown [this message]
2023-01-18 23:09     ` William Zhang
2023-01-19 13:09       ` Mark Brown
2023-01-06 20:08 ` [PATCH 11/16] spi: bcm63xx-hsspi: Add prepend feature support William Zhang
2023-01-06 22:00   ` Mark Brown
2023-01-07  3:52     ` William Zhang
2023-01-09 19:31       ` Mark Brown
2023-01-09 20:43         ` William Zhang
2023-01-10 21:18           ` Mark Brown
2023-01-11 19:42             ` William Zhang
2023-01-12 16:57               ` Mark Brown
2023-01-06 20:08 ` [PATCH 12/16] spi: bcm63xx-hsspi: Add clock gate disable option support William Zhang
2023-01-06 20:08 ` [PATCH 13/16] spi: spi-mem: Allow controller supporting mem_ops without exec_op William Zhang
2023-01-06 20:08 ` [PATCH 14/16] spi: bcm63xx-hsspi: prepend: Disable spi mem dual io read op support William Zhang
2023-01-06 22:07   ` Mark Brown
2023-01-07  3:57     ` William Zhang
2023-01-06 20:08 ` [PATCH 15/16] spi: bcmbca-hsspi: Add driver for newer HSSPI controller William Zhang
2023-01-07 22:02   ` kernel test robot
2023-01-08  2:25   ` kernel test robot
2023-01-06 20:08 ` [PATCH 16/16] MAINTAINERS: Add entry for Broadcom Broadband SoC HS SPI drivers William Zhang

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=Y8BMiOvbjncXK4RO@sirena.org.uk \
    --to=broonie@kernel.org \
    --cc=anand.gore@broadcom.com \
    --cc=bcm-kernel-feedback-list@broadcom.com \
    --cc=dan.beygelman@broadcom.com \
    --cc=dregan@mail.com \
    --cc=f.fainelli@gmail.com \
    --cc=joel.peshkin@broadcom.com \
    --cc=jonas.gorski@gmail.com \
    --cc=kursad.oney@broadcom.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-spi@vger.kernel.org \
    --cc=tomer.yacoby@broadcom.com \
    --cc=william.zhang@broadcom.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox