All of lore.kernel.org
 help / color / mirror / Atom feed
From: Joel Stanley <joel@jms.id.au>
To: OpenBMC Maillist <openbmc@lists.ozlabs.org>
Cc: "Lei Yu" <yulei.sh@bytedance.com>,
	"Ryan Chen" <ryan_chen@aspeedtech.com>,
	"Cédric Le Goater" <clg@kaod.org>
Subject: Call for testing: spi-mem driver for Aspeed SMC controllers
Date: Fri, 25 Feb 2022 05:29:58 +0000	[thread overview]
Message-ID: <CACPK8XdG=ok4P7Rd-SZ3htPsaXdy76rtMdqgcM6_QM2+fgoeJg@mail.gmail.com> (raw)
In-Reply-To: <20220214094231.3753686-1-clg@kaod.org>

Cedric has authored a new drive for the SPI NOR devices on the ASPEED
SoCs. It supports 2400, 2500 and 2600. It is written using the spi-mem
subsystem, which should mean it can go upstream.

This is great news, as our current driver is half upstream, half in
the openbmc tree, due to some issues getting it merged as part of the
spi-nor subsystem.

It would be great to have testing. I've created a commit that patches
in support to whatever kernel tree you're using. Hopefully this makes
it easier to test atop your internal branches:

https://gerrit.openbmc-project.xyz/c/openbmc/openbmc/+/51551

Cherry pick this commit into your tree, and see how it goes, and report back.

I plan to switch the openbmc tree to this driver when we next rebase
the kernel. We could also backport it to dev-5.15 as an option.

You can direct testing results to this thread, or reply directly to
the upstream thread:

https://lore.kernel.org/all/20220214094231.3753686-1-clg@kaod.org/

Cheers,

Joel

---------- Forwarded message ---------
From: Cédric Le Goater <clg@kaod.org>
Date: Mon, 14 Feb 2022 at 09:42
Subject: [PATCH 00/10] spi: spi-mem: Add driver for Aspeed SMC controllers
To: <linux-spi@vger.kernel.org>, <linux-mtd@lists.infradead.org>
Cc: Mark Brown <broonie@kernel.org>, Tudor Ambarus
<tudor.ambarus@microchip.com>, Pratyush Yadav <p.yadav@ti.com>, Miquel
Raynal <miquel.raynal@bootlin.com>, Richard Weinberger
<richard@nod.at>, Vignesh Raghavendra <vigneshr@ti.com>,
<linux-aspeed@lists.ozlabs.org>, Joel Stanley <joel@jms.id.au>, Andrew
Jeffery <andrew@aj.id.au>, Chin-Ting Kuo
<chin-ting_kuo@aspeedtech.com>, <devicetree@vger.kernel.org>, Rob
Herring <robh+dt@kernel.org>, <linux-arm-kernel@lists.infradead.org>,
<linux-kernel@vger.kernel.org>, Cédric Le Goater <clg@kaod.org>


Hi,

This series adds a new SPI driver using the spi-mem interface for the
Aspeed static memory controllers of the AST2600, AST2500 and AST2400
SoCs.

 * AST2600 Firmware SPI Memory Controller (FMC)
 * AST2600 SPI Flash Controller (SPI1 and SPI2)
 * AST2500 Firmware SPI Memory Controller (FMC)
 * AST2500 SPI Flash Controller (SPI1 and SPI2)
 * AST2400 New Static Memory Controller (also referred as FMC)
 * AST2400 SPI Flash Controller (SPI)

It is based on the current OpenBMC kernel driver [1], using directly
the MTD SPI-NOR interface and on a patchset [2] previously proposed
adding support for the AST2600 only. This driver takes a slightly
different approach to cover all 6 controllers.

It does not make use of the controller register disabling Address and
Data byte lanes because is not available on the AST2400 SoC. We could
introduce a specific handler for new features available on recent SoCs
if needed. As there is not much difference on performance, the driver
chooses the common denominator: "User mode" which has been heavily
tested in [1]. "User mode" is also used as a fall back method when
flash device mapping window is too small.

Problems to address with spi-mem were the configuration of the mapping
windows and the calibration of the read timings. The driver handles
them in the direct mapping handler when some knowledge on the size of
the flash device is know. It is not perfect but not incorrect either.
The algorithm is one from [1] because it doesn't require the DMA
registers which are not available on all controllers.

Direct mapping for writes is not supported (yet). I have seen some
corruption with writes and I preferred to use the safer and proven
method of the initial driver [1]. We can improve that later.

The driver supports Quad SPI RX transfers on the AST2600 SoC but it
didn't have the expected results. Therefore it is not activated yet.
This needs more tests.

The series does not remove the current Aspeed SMC driver but prepares
ground for its removal by changing its CONFIG option. This last step
can be addressed as a followup when the new driver using the spi-mem
interface has been sufficiently exposed.

Tested on:

 * OpenPOWER Palmetto (AST2400)
 * Evaluation board (AST2500)
 * OpenPOWER Witherspoon (AST2500)
 * Evaluation board (AST2600 A0)
 * Rainier board (AST2600)

[1] https://github.com/openbmc/linux/blob/dev-5.15/drivers/mtd/spi-nor/controllers/aspeed-smc.c
[2] https://patchwork.ozlabs.org/project/linux-aspeed/list/?series=212394

Thanks,

C.

Cédric Le Goater (10):
  mtd: spi-nor: aspeed: Rename Kconfig option
  dt-bindings: spi: Add Aspeed SMC controllers device tree binding
  spi: spi-mem: Add driver for Aspeed SMC controllers
  spi: aspeed: Add support for direct mapping
  spi: aspeed: Adjust direct mapping to device size
  spi: aspeed: Workaround AST2500 limitations
  spi: aspeed: Add support for the AST2400 SPI controller
  spi: aspeed: Calibrate read timings
  ARM: dts: aspeed: Enable Dual SPI RX transfers
  spi: aspeed: Activate new spi-mem driver

 drivers/spi/spi-aspeed-smc.c                  | 1241 +++++++++++++++++
 .../bindings/spi/aspeed,ast2600-fmc.yaml      |   92 ++
 arch/arm/boot/dts/aspeed-g4.dtsi              |    6 +
 arch/arm/boot/dts/aspeed-g5.dtsi              |    7 +
 arch/arm/boot/dts/aspeed-g6.dtsi              |    8 +
 drivers/mtd/spi-nor/controllers/Kconfig       |    4 +-
 drivers/mtd/spi-nor/controllers/Makefile      |    2 +-
 drivers/spi/Kconfig                           |   11 +
 drivers/spi/Makefile                          |    1 +
 9 files changed, 1369 insertions(+), 3 deletions(-)
 create mode 100644 drivers/spi/spi-aspeed-smc.c
 create mode 100644
Documentation/devicetree/bindings/spi/aspeed,ast2600-fmc.yaml

--
2.34.1

  parent reply	other threads:[~2022-02-25  5:30 UTC|newest]

Thread overview: 115+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-02-14  9:42 [PATCH 00/10] spi: spi-mem: Add driver for Aspeed SMC controllers Cédric Le Goater
2022-02-14  9:42 ` Cédric Le Goater
2022-02-14  9:42 ` Cédric Le Goater
2022-02-14  9:42 ` [PATCH 01/10] mtd: spi-nor: aspeed: Rename Kconfig option Cédric Le Goater
2022-02-14  9:42   ` Cédric Le Goater
2022-02-14  9:42   ` Cédric Le Goater
2022-02-25  7:31   ` Pratyush Yadav
2022-02-25  7:31     ` Pratyush Yadav
2022-02-25  7:31     ` Pratyush Yadav
2022-02-27 18:50     ` Cédric Le Goater
2022-02-27 18:50       ` Cédric Le Goater
2022-02-27 18:50       ` Cédric Le Goater
2022-02-28  6:07       ` Joel Stanley
2022-02-28  6:07         ` Joel Stanley
2022-02-28  6:07         ` Joel Stanley
2022-02-28 14:37         ` Cédric Le Goater
2022-02-28 14:37           ` Cédric Le Goater
2022-02-28 14:37           ` Cédric Le Goater
2022-02-14  9:42 ` [PATCH 02/10] dt-bindings: spi: Add Aspeed SMC controllers device tree binding Cédric Le Goater
2022-02-14  9:42   ` Cédric Le Goater
2022-02-14  9:42   ` Cédric Le Goater
2022-02-15 19:49   ` Rob Herring
2022-02-15 19:49     ` Rob Herring
2022-02-15 19:49     ` Rob Herring
2022-02-15 21:06   ` Rob Herring
2022-02-15 21:06     ` Rob Herring
2022-02-15 21:06     ` Rob Herring
2022-02-17  8:37     ` Cédric Le Goater
2022-02-17  8:37       ` Cédric Le Goater
2022-02-17  8:37       ` Cédric Le Goater
2022-02-14  9:42 ` [PATCH 03/10] spi: spi-mem: Add driver for Aspeed SMC controllers Cédric Le Goater
2022-02-14  9:42   ` Cédric Le Goater
2022-02-14  9:42   ` Cédric Le Goater
2022-02-15  6:27   ` Lukas Wunner
2022-02-15  9:07     ` Cédric Le Goater
2022-02-15  9:07       ` Cédric Le Goater
2022-02-15  9:07       ` Cédric Le Goater
2022-02-25  7:50   ` Pratyush Yadav
2022-02-25  7:50     ` Pratyush Yadav
2022-02-25  7:50     ` Pratyush Yadav
2022-02-27 18:46     ` Cédric Le Goater
2022-02-27 18:46       ` Cédric Le Goater
2022-02-27 18:46       ` Cédric Le Goater
2022-02-14  9:42 ` [PATCH 04/10] spi: aspeed: Add support for direct mapping Cédric Le Goater
2022-02-14  9:42   ` Cédric Le Goater
2022-02-14  9:42   ` Cédric Le Goater
2022-02-25  9:12   ` Pratyush Yadav
2022-02-25  9:12     ` Pratyush Yadav
2022-02-25  9:12     ` Pratyush Yadav
2022-02-27 21:06     ` Cédric Le Goater
2022-02-27 21:06       ` Cédric Le Goater
2022-02-27 21:06       ` Cédric Le Goater
2022-02-14  9:42 ` [PATCH 05/10] spi: aspeed: Adjust direct mapping to device size Cédric Le Goater
2022-02-14  9:42   ` Cédric Le Goater
2022-02-14  9:42   ` Cédric Le Goater
2022-02-14  9:42 ` [PATCH 06/10] spi: aspeed: Workaround AST2500 limitations Cédric Le Goater
2022-02-14  9:42   ` Cédric Le Goater
2022-02-14  9:42   ` Cédric Le Goater
2022-02-14  9:42 ` [PATCH 07/10] spi: aspeed: Add support for the AST2400 SPI controller Cédric Le Goater
2022-02-14  9:42   ` Cédric Le Goater
2022-02-14  9:42   ` Cédric Le Goater
2022-02-14  9:42 ` [PATCH 08/10] spi: aspeed: Calibrate read timings Cédric Le Goater
2022-02-14  9:42   ` Cédric Le Goater
2022-02-14  9:42   ` Cédric Le Goater
2022-02-25  9:18   ` Pratyush Yadav
2022-02-25  9:18     ` Pratyush Yadav
2022-02-25  9:18     ` Pratyush Yadav
2022-02-27 21:27     ` Cédric Le Goater
2022-02-27 21:27       ` Cédric Le Goater
2022-02-27 21:27       ` Cédric Le Goater
2022-02-14  9:42 ` [PATCH 09/10] ARM: dts: aspeed: Enable Dual SPI RX transfers Cédric Le Goater
2022-02-14  9:42   ` Cédric Le Goater
2022-02-14  9:42   ` Cédric Le Goater
2022-02-16  7:21   ` Joel Stanley
2022-02-16  7:21     ` Joel Stanley
2022-02-16  7:21     ` Joel Stanley
2022-02-14  9:42 ` [PATCH 10/10] spi: aspeed: Activate new spi-mem driver Cédric Le Goater
2022-02-14  9:42   ` Cédric Le Goater
2022-02-14  9:42   ` Cédric Le Goater
2022-02-16  7:02   ` Joel Stanley
2022-02-16  7:02     ` Joel Stanley
2022-02-16  7:02     ` Joel Stanley
2022-02-16  8:12     ` Cédric Le Goater
2022-02-16  8:12       ` Cédric Le Goater
2022-02-16  8:12       ` Cédric Le Goater
2022-02-16  7:21 ` [PATCH 00/10] spi: spi-mem: Add driver for Aspeed SMC controllers Joel Stanley
2022-02-16  7:21   ` Joel Stanley
2022-02-16  7:21   ` Joel Stanley
2022-02-25  5:29 ` Joel Stanley [this message]
2022-02-27 18:53   ` Call for testing: spi-mem " Cédric Le Goater
2022-02-28  6:30     ` Tao Ren
2022-03-02  6:05     ` Tao Ren
2022-03-02  6:23       ` Cédric Le Goater
2022-03-02  6:47         ` Tao Ren
2022-03-03  6:03         ` Tao Ren
2022-03-03  7:02           ` Cédric Le Goater
2022-03-04  7:53             ` Tao Ren
2022-03-01  9:57   ` John Wang
2022-03-01 10:25     ` Cédric Le Goater
2022-03-02  2:47       ` John Wang
2022-03-01 12:20     ` Joel Stanley
2022-03-02  2:28       ` [External] " Lei Yu
2022-03-07  9:41         ` Lei Yu
2022-03-07 13:06           ` Cédric Le Goater
2022-03-08  1:53             ` Lei Yu
2022-03-08  9:30               ` Cédric Le Goater
2022-03-08  9:47                 ` Lei Yu
2022-03-08 14:57                   ` Cédric Le Goater
2022-03-09  1:58                     ` Lei Yu
2022-03-09  7:40                       ` Cédric Le Goater
2022-03-09  7:50                         ` Cédric Le Goater
2022-03-02  5:45       ` Cédric Le Goater
2022-03-03  9:45         ` Joel Stanley
2022-03-03  9:51           ` Cédric Le Goater
2022-03-03  9:57             ` Joel Stanley

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='CACPK8XdG=ok4P7Rd-SZ3htPsaXdy76rtMdqgcM6_QM2+fgoeJg@mail.gmail.com' \
    --to=joel@jms.id.au \
    --cc=clg@kaod.org \
    --cc=openbmc@lists.ozlabs.org \
    --cc=ryan_chen@aspeedtech.com \
    --cc=yulei.sh@bytedance.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.