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