All of lore.kernel.org
 help / color / mirror / Atom feed
From: Tao Ren <rentao.bupt@gmail.com>
To: "Cédric Le Goater" <clg@kaod.org>
Cc: OpenBMC Maillist <openbmc@lists.ozlabs.org>,
	Lei Yu <yulei.sh@bytedance.com>,
	Ryan Chen <ryan_chen@aspeedtech.com>,
	Joel Stanley <joel@jms.id.au>
Subject: Re: Call for testing: spi-mem driver for Aspeed SMC controllers
Date: Tue, 1 Mar 2022 22:47:20 -0800	[thread overview]
Message-ID: <Yh8S+Jlh5D22iL62@taoren-fedora-PC23YAB4> (raw)
In-Reply-To: <1806afc0-f716-4713-6ce6-0c46326c7655@kaod.org>

Hi Cedric,

Sure. Let me make the changes and will share you the results tomorrow.


Cheers,

Tao

On Wed, Mar 02, 2022 at 07:23:15AM +0100, Cédric Le Goater wrote:
> Hello Tao,
> 
> On 3/2/22 07:05, Tao Ren wrote:
> > Hi Cedric,
> > 
> > I tested v2 on wedge100 (ast2400) and cmm (ast2500). I don't see any
> > functional failures except below warning on ast2400.
> 
> Thanks for the tests
> 
> > Is it something we should worry about?
> > 
> > > spi-aspeed-smc 1e620000.spi: No good frequency, using dumb slow
> 
> 
> This means that the training failed for all HCLK settings. We never had
> an AST2400 board with a second device on the FMC controller but we noticed
> that any freq setting above 50MHz was unstable.
> 
> Also, aspeed-g4.dtsi does not have any "spi-max-frequency" for flash@1.
> This needs an update.
> 
> > The v2 patch series (10 patches) were applied to linux stable 5.15.25,
> > and below are the outputs on wedge100 (ast2400):
> > 
> > root@wedge100-bmc:~# dmesg | grep -i spi
> > [   11.479736] spi-nor spi0.0: mx25l25635e (32768 Kbytes)
> > [   11.704313] spi-aspeed-smc 1e620000.spi: CE0 read buswidth:2 [0x203c0641]
> > [   11.785842] 5 fixed-partitions partitions found on MTD device spi0.0
> > [   11.862033] Creating 5 MTD partitions on "spi0.0":
> > [   13.039009] spi-nor spi0.1: mx25l25635e (32768 Kbytes)
> > [   13.107056] spi-aspeed-smc 1e620000.spi: No good frequency, using dumb slow
> > [   13.190551] spi-aspeed-smc 1e620000.spi: CE1 read buswidth:2 [0x203c0041]
> > [   13.271959] 1 fixed-partitions partitions found on MTD device spi0.1
> > [   13.348097] Creating 1 MTD partitions on "spi0.1":
> 
> Curious. The device seems alive and very slow.
> 
> Could you please add "dyndbg="file drivers/spi/* +p;" to the bootargs
> and reboot ?
> 
> 
> > [   28.169886] SPI driver bmp280 has no spi_device_id for bosch,bmp085
> > root@wedge100-bmc:/tmp# cat /proc/mtd
> > dev:    size   erasesize  name
> > mtd0: 00060000 00010000 "u-boot"
> > mtd1: 00020000 00010000 "env"
> > mtd2: 01b80000 00010000 "fit"
> > mtd3: 00400000 00010000 "data0"
> > mtd4: 02000000 00010000 "flash0"
> > mtd5: 02000000 00010000 "flash1"
> > root@wedge100-bmc:/tmp# ls -l flash-wedge100
> > -rw-r--r--    1 root     root      22867574 Mar  1 20:49 flash-wedge100
> > root@wedge100-bmc:/tmp# time flashcp flash-wedge100 /dev/mtd4
> > 
> > real    2m22.860s
> > user    0m0.478s
> > sys     2m10.647s
> > root@wedge100-bmc:/tmp# ls -l flash-wedge100.v2021.13.1
> > -rw-r--r--    1 root     root      19743390 Mar  1 10:10 flash-wedge100.v2021.13.1
> > root@wedge100-bmc:/tmp# time flashcp flash-wedge100.v2021.13.1 /dev/mtd5
> > 
> > real    2m23.144s
> > user    0m0.409s
> > sys     2m10.526s
> 
> Since spi0.1 seems to be really slow, could you run
> 
>   time mdsum /dev/mtd5
> 
> and compare with flash-wedge100.v2021.13.1 ? But please update
> "spi-max-frequency" in the DT first.
> 
> Thanks,
> 
> C.
> 
> > 
> > And here are the outpus on cmm (ast2500):
> > 
> > root@cmm001-oob:~# dmesg | grep -i spi
> > [   15.172879] spi-nor spi0.0: mx25l25635e (32768 Kbytes)
> > [   15.361516] spi-aspeed-smc 1e620000.spi: CE0 read buswidth:2 [0x203c0641]
> > [   15.442978] 5 fixed-partitions partitions found on MTD device spi0.0
> > [   15.519145] Creating 5 MTD partitions on "spi0.0":
> > [   15.883123] spi-nor spi0.1: mx25l25635e (32768 Kbytes)
> > [   16.071286] spi-aspeed-smc 1e620000.spi: CE1 read buswidth:2 [0x203c0641]
> > [   16.152711] 1 fixed-partitions partitions found on MTD device spi0.1
> > [   16.228830] Creating 1 MTD partitions on "spi0.1":
> > [   63.831721] SPI driver bmp280 has no spi_device_id for bosch,bmp085
> > root@cmm001-oob:/tmp# cat /proc/mtd
> > dev:    size   erasesize  name
> > mtd0: 00060000 00001000 "u-boot"
> > mtd1: 00020000 00001000 "env"
> > mtd2: 01b80000 00001000 "fit"
> > mtd3: 00400000 00001000 "data0"
> > mtd4: 02000000 00001000 "flash0"
> > mtd5: 02000000 00001000 "flash1"
> > root@cmm001-oob:/tmp# ls -l /tmp/flash-cmm
> > -rw-r--r--    1 root     root      23772278 Mar  1 21:04 /tmp/flash-cmm
> > root@cmm001-oob:/tmp# time flashcp /tmp/flash-cmm /dev/mtd4
> > real    3m37.154s
> > user    0m0.260s
> > sys     3m31.700s
> > root@cmm001-oob:/tmp# ls -l /tmp/flash-cmm.v2021.48.0
> > -rw-r--r--    1 root     root      23723958 Mar  1 21:07 /tmp/flash-cmm.v2021.48.0
> > root@cmm001-oob:/tmp# time flashcp flash-cmm.v2021.48.0 /dev/mtd5
> > 
> > real    3m33.843s
> > user    0m0.458s
> > sys     3m28.216s
> > 
> > 
> > Cheers,
> > 
> > Tao
> > 
> > On Sun, Feb 27, 2022 at 07:53:37PM +0100, Cédric Le Goater wrote:
> > > On 2/25/22 06:29, Joel Stanley wrote:
> > > > 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/
> > > 
> > > or grab the v2 from :
> > > 
> > >    https://github.com/legoater/linux/tree/openbmc-5.15
> > > 
> > > I have addressed the comments on driver bind/unbind.
> > > 
> > > Thanks,
> > > 
> > > C.
> > > 
> > > > 
> > > > 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
> > > 
> 

  reply	other threads:[~2022-03-02  6:48 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 ` Call for testing: spi-mem " Joel Stanley
2022-02-27 18:53   ` 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 [this message]
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=Yh8S+Jlh5D22iL62@taoren-fedora-PC23YAB4 \
    --to=rentao.bupt@gmail.com \
    --cc=clg@kaod.org \
    --cc=joel@jms.id.au \
    --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.