[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: |
Cheng, Xuzhou |
Subject: |
RE: [PATCH] hw/arm: sabrelite: Connect SPI flash CS line to GPIO3_19 |
Date: |
Mon, 27 Sep 2021 02:25:17 +0000 |
> 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 };
Yes, it's worthy. I'll send v2 to update commit message.
> > 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 =)
It's fun to play oscilloscope. :^)