[PATCH v6 00/11] spi: spi-mem: Convert Aspeed SMC driver to spi-mem
Joel Stanley
joel at jms.id.au
Tue May 3 16:43:38 AEST 2022
On Tue, 3 May 2022 at 06:06, Cédric Le Goater <clg at kaod.org> wrote:
>
> 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.
> There are some issues on the pinctrl to investigate first.
>
> Tested on:
>
> * OpenPOWER Palmetto (AST2400)
> * Facebook Wedge 100 BMC (AST2400) by Tao Ren <rentao.bupt at gmail.com>
> * Evaluation board (AST2500)
> * Inspur FP5280G2 BMC (AST2500) by John Wang <wangzq.jn at gmail.com>
> * Facebook Backpack CMM BMC (AST2500) by Tao Ren <rentao.bupt at gmail.com>
> * OpenPOWER Witherspoon (AST2500)
> * Evaluation board (AST2600 A0 and A3)
> * Rainier board (AST2600)
This is now the driver used in the dev-5.15 openbmc kernel tree. Thank
you for all of your hard work Cédric.
Cheers,
Joel
More information about the openbmc
mailing list