openbmc.lists.ozlabs.org archive mirror
 help / color / mirror / Atom feed
From: "Cédric Le Goater" <clg@kaod.org>
To: John Wang <wangzq.jn@gmail.com>, Joel Stanley <joel@jms.id.au>
Cc: OpenBMC Maillist <openbmc@lists.ozlabs.org>,
	Lei Yu <yulei.sh@bytedance.com>,
	Ryan Chen <ryan_chen@aspeedtech.com>
Subject: Re: Call for testing: spi-mem driver for Aspeed SMC controllers
Date: Tue, 1 Mar 2022 11:25:35 +0100	[thread overview]
Message-ID: <b99ecbd2-caa4-c7b3-518c-45477e062d53@kaod.org> (raw)
In-Reply-To: <CAHwNHZUMhPeYmev=6Zn+Ay_Le7UBmPurBMokLOB623i0eu2ZOw@mail.gmail.com>

On 3/1/22 10:57, John Wang wrote:
> Joel Stanley <joel@jms.id.au> 于2022年2月25日周五 13:30写道:
>>
>> 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
> 
> tested on a fp5280g2 (ast2500), it looks okay.

Thanks !
  
> root@fp5280g2:~# dmesg |grep spi
> [    1.594677] spi-nor spi0.0: mx66l51235f (65536 Kbytes)
> [    1.728194] spi-aspeed-smc 1e620000.spi: CE0 read buswidth:2 [0x203c0641]
> [    1.992733] spi-nor spi1.0: mx66l51235f (65536 Kbytes)
> [    2.211741] spi-aspeed-smc 1e630000.spi: CE0 read buswidth:2 [0x203c0741]

Training was done on both controllers. It's a little faster on SPI1 because
the clock is set at KCLK/2 whereas FMC uses HCLK/4. Dual IO 4B read command
is the default setting for both.

I test writing with :

     dd if=/dev/random of=$tmp bs=1M count=$count
     md5sum $tmp
     
     time flashcp -v $tmp $mtd  # ~3min for 32MB
     time md5sum $mtd # ~3s for 32MB

but not on /dev/mtd0 !

C.

> [    3.175017] SPI driver bmp280 has no spi_device_id for bosch,bmp085
> 
> 
> 
>>
>> 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


  reply	other threads:[~2022-03-01 10:26 UTC|newest]

Thread overview: 27+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
     [not found] <20220214094231.3753686-1-clg@kaod.org>
2022-02-25  5:29 ` Call for testing: spi-mem driver for Aspeed SMC controllers 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
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 [this message]
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=b99ecbd2-caa4-c7b3-518c-45477e062d53@kaod.org \
    --to=clg@kaod.org \
    --cc=joel@jms.id.au \
    --cc=openbmc@lists.ozlabs.org \
    --cc=ryan_chen@aspeedtech.com \
    --cc=wangzq.jn@gmail.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).