Call for testing: spi-mem driver for Aspeed SMC controllers

Cédric Le Goater clg at kaod.org
Wed Mar 2 16:45:01 AEDT 2022


On 3/1/22 13:20, Joel Stanley wrote:
> On Tue, 1 Mar 2022 at 09:57, John Wang <wangzq.jn at gmail.com> wrote:
>>
>> Joel Stanley <joel at 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.
>>
>> root at 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]
>> [    3.175017] SPI driver bmp280 has no spi_device_id for bosch,bmp085
> 
> 
> I've also done some testing, this time on an AST2600A3 EVB.
> 
> I tried to enable quad spi by adjust the device tree:
> 
> --- a/arch/arm/boot/dts/aspeed-ast2600-evb.dts
> +++ b/arch/arm/boot/dts/aspeed-ast2600-evb.dts
> @@ -157,10 +157,13 @@ &rtc {
>   };
> 
>   &fmc {
> +     pinctrl-names = "default";
> +     pinctrl-0 = <&pinctrl_fwqspid_default>;
>          status = "okay";
>          flash at 0 {
>                  status = "okay";
>                  m25p,fast-read;
> +               spi-rx-bus-width = <4>;
>                  label = "bmc";
>                  spi-max-frequency = <50000000>;
> 
> 
> But the pinctrl setting failed with this error:
> 
> [    0.742963] aspeed-g6-pinctrl 1e6e2000.syscon:pinctrl: invalid
> function FWQSPID in map table
> 
> So I removed the quad spi settings and re-tested:
> 
> [    0.746796] spi-nor spi0.0: w25q512jv (65536 Kbytes)
> [    0.808104] spi-aspeed-smc 1e620000.spi: CE0 read buswidth:2 [0x203c0641]
> [    0.862687] spi-nor spi0.1: w25q512jv (65536 Kbytes)
> [    0.923991] spi-aspeed-smc 1e620000.spi: CE1 read buswidth:2 [0x203c0641]


On the FMC controller, could you please increase the clock to :

	spi-max-frequency = <100000000>;

and check the results ?

> [    0.937639] spi-nor spi1.0: w25q256 (32768 Kbytes)
> [    1.062246] spi-aspeed-smc 1e630000.spi: CE0 read buswidth:2 [0x203c0741]
> [    1.076507] spi-nor spi2.0: gd25q256 (32768 Kbytes)
> [    1.173951] spi-aspeed-smc 1e631000.spi: CE0 read buswidth:2 [0x203c0741]
> 
> ./mtd-stress.sh mtd5 mtd6 mtd7 mtd8

A good test would be to read from /dev/mtd0 and reflash the resulting file.
Keep an external programmer close at hand just in case :)

Thanks for these tests Joel,

C.


> 22+0 records in
> 22+0 records out
> 23068672 bytes (23 MB, 22 MiB) copied, 2.40148 s, 9.6 MB/s
> 14d980eb27e1b5d6554f22a71fc93de6  /tmp/tmp.CWpblJtRYl
> Erasing blocks: 352/352 (100%)
> Writing data: 22528k/22528k (100%)
> Verifying data: 22528k/22528k (100%)
> 
> real    2m47.896s
> user    0m0.080s
> sys    2m46.984s
> 14d980eb27e1b5d6554f22a71fc93de6  /dev/mtd5
> 
> real    0m3.344s
> user    0m0.166s
> sys    0m3.101s
> 
> 
> 64+0 records in
> 64+0 records out
> 67108864 bytes (67 MB, 64 MiB) copied, 5.38035 s, 12.5 MB/s
> 5b2a21e51a39f6c4e01c92b3c1b8825c  /tmp/tmp.BnJmqVrHHa
> Erasing blocks: 1024/1024 (100%)
> Writing data: 65536k/65536k (100%)
> Verifying data: 65536k/65536k (100%)
> 
> real    7m40.625s
> user    0m0.230s
> sys    7m39.931s
> 5b2a21e51a39f6c4e01c92b3c1b8825c  /dev/mtd6
> 
> real    0m9.723s
> user    0m0.484s
> sys    0m9.110s
> 
> 
> 32+0 records in
> 32+0 records out
> 33554432 bytes (34 MB, 32 MiB) copied, 2.4457 s, 13.7 MB/s
> a3a343b1d4233e364d332a9b466a0a40  /tmp/tmp.4NsXyq09Km
> Erasing blocks: 512/512 (100%)
> Writing data: 32768k/32768k (100%)
> Verifying data: 32768k/32768k (100%)
> 
> real    2m17.560s
> user    0m0.100s
> sys    2m17.346s
> a3a343b1d4233e364d332a9b466a0a40  /dev/mtd7
> 
> real    0m3.598s
> user    0m0.247s
> sys    0m3.313s
> 
> 
> 32+0 records in
> 32+0 records out
> 33554432 bytes (34 MB, 32 MiB) copied, 3.49483 s, 9.6 MB/s
> fc65634b925e4655dd9db70972c1ed46  /tmp/tmp.MaXhJaz10l
> Erasing blocks: 512/512 (100%)
> Writing data: 32768k/32768k (100%)
> Verifying data: 32768k/32768k (100%)
> 
> real    1m46.311s
> user    0m0.130s
> sys    1m46.064s
> fc65634b925e4655dd9db70972c1ed46  /dev/mtd8
> 
> real    0m3.513s
> user    0m0.246s
> sys    0m3.219s




More information about the openbmc mailing list