[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [PATCH] hw/arm: sabrelite: Connect SPI flash CS line to GPIO3_19
From: |
Philippe Mathieu-Daudé |
Subject: |
Re: [PATCH] hw/arm: sabrelite: Connect SPI flash CS line to GPIO3_19 |
Date: |
Sun, 26 Sep 2021 09:40:22 +0200 |
User-agent: |
Mozilla/5.0 (X11; Linux x86_64; rv:91.0) Gecko/20100101 Thunderbird/91.1.0 |
On 9/26/21 04:56, Xuzhou Cheng wrote:
> From: Xuzhou Cheng <xuzhou.cheng@windriver.com>
>
> The Linux spi-imx driver does not work on QEMU. The reason is that the
> state of m25p80 loops in STATE_READING_DATA state after receiving
> RDSR command, the new command is ignored. Before sending a new command,
> CS line should be pulled high to make the state of m25p80 back to IDLE.
>
> Currently the SPI flash CS line is connected to the SPI controller, but
> on the real board, it's connected to GPIO3_19.
Maybe worth mentioning this matches the board dts:
arch/arm/boot/dts/imx6qdl-sabrelite.dtsi:
310 &ecspi1 {
311 cs-gpios = <&gpio3 19 GPIO_ACTIVE_LOW>;
312 pinctrl-names = "default";
313 pinctrl-0 = <&pinctrl_ecspi1>;
314 status = "okay";
315
316 flash: m25p80@0 {
317 compatible = "sst,sst25vf016b", "jedec,spi-nor";
318 spi-max-frequency = <20000000>;
319 reg = <0>;
320 };
321 };
> Should connect the SSI_GPIO_CS to GPIO3_19 when adding a spi-nor to
> spi1 on sabrelite machine.
>
> Verified this patch on Linux v5.14.
>
> Logs:
> # echo "01234567899876543210" > test
> # mtd_debug erase /dev/mtd0 0x0 0x1000
> Erased 4096 bytes from address 0x00000000 in flash
> # mtd_debug write /dev/mtdblock0 0x0 20 test
> Copied 20 bytes from test to address 0x00000000 in flash
> # mtd_debug read /dev/mtdblock0 0x0 20 test_out
> Copied 20 bytes from address 0x00000000 in flash to test_out
> # cat test_out
> 01234567899876543210#
>
> Signed-off-by: Xuzhou Cheng <xuzhou.cheng@windriver.com>
> Reported-by: Guenter Roeck <linux@roeck-us.net>
> Reviewed-by: Bin Meng <bin.meng@windriver.com>
> ---
> hw/arm/sabrelite.c | 2 +-
> 1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/hw/arm/sabrelite.c b/hw/arm/sabrelite.c
> index 29fc777b61..553608e583 100644
> --- a/hw/arm/sabrelite.c
> +++ b/hw/arm/sabrelite.c
> @@ -87,7 +87,7 @@ static void sabrelite_init(MachineState *machine)
> qdev_realize_and_unref(flash_dev, BUS(spi_bus),
> &error_fatal);
>
> cs_line = qdev_get_gpio_in_named(flash_dev, SSI_GPIO_CS, 0);
> - sysbus_connect_irq(SYS_BUS_DEVICE(spi_dev), 1, cs_line);
> + qdev_connect_gpio_out(DEVICE(&s->gpio[2]), 19, cs_line);
> }
> }
> }
>
Thank for using an oscilloscope to verify, it reminded me
some SDcard debugging 4 years ago =)
Reviewed-by: Philippe Mathieu-Daudé <f4bug@amsat.org>