Hi Siva, Sorry for the very late reply!
> -----Original Message----- > From: Siva Durga Prasad Paladugu [mailto:siva.durga.palad...@xilinx.com] > Sent: Thursday, January 04, 2018 1:08 PM > To: u-boot@lists.denx.de > Cc: jagannadh.t...@gmail.com; Siva Durga Prasad Paladugu > <siva...@xilinx.com> > Subject: [PATCH v2 1/2] spi: zynqmp_qspi: Add support for ZynqMP qspi > driver > > This patch adds qspi driver support for ZynqMP SoC. This driver is > responsible for communicating with qspi flash devices. The Technical Reference Manual of the ZynqMP talks about the LQSPI and the GQSPI. Based on the #defines, I'm guessing this is for the GQSPI but should we be more explicit about it? > > Signed-off-by: Siva Durga Prasad Paladugu <siva...@xilinx.com> > --- > Changes from v1: > - Rebased on top of latest master > - Moved macro definitions to .h file as per comment > - Fixed magic values with macros as per comment > --- > arch/arm/cpu/armv8/zynqmp/Kconfig | 7 + > arch/arm/include/asm/arch-zynqmp/zynqmp_qspi.h | 154 ++++++ > drivers/spi/Makefile | 1 + > drivers/spi/zynqmp_qspi.c | 678 > +++++++++++++++++++++++++ > 4 files changed, 840 insertions(+) > create mode 100644 arch/arm/include/asm/arch-zynqmp/zynqmp_qspi.h > create mode 100644 drivers/spi/zynqmp_qspi.c I tried building on top of master and running it on a zcu102 (Rev-B) board but I can't get anything newer than v2017.11 to work. I get this failure (unrelated to this series): In: serial@ff000000 Out: serial@ff000000 Err: serial@ff000000 initcall sequence 000000007ff8dee8 failed at call 0000000008002c7c (err=-22) ### ERROR ### Please RESET the board ### After looking arround a little, it seems it may be because of my FSBL. Since I can't get another FSBL for now, I rebased the series on top of v2017.11 and it seems to be working well except for the erase operation in a certain range of flash addresses. The same operations (in that range) in Linux seem to be working. I'm guessing this is due to something else, maybe in the spi_flash driver. Here is the test I used: ZynqMP> sf probe SF: Detected n25q512a with page size 256 Bytes, erase size 4 KiB, total 64 MiB ZynqMP> mw.w 0x100 0x00 0x100 ZynqMP> md.w 0x100 00000100: 0000 0000 0000 0000 0000 0000 0000 0000 ................ 00000110: 0000 0000 0000 0000 0000 0000 0000 0000 ................ 00000120: 0000 0000 0000 0000 0000 0000 0000 0000 ................ 00000130: 0000 0000 0000 0000 0000 0000 0000 0000 ................ 00000140: 0000 0000 0000 0000 0000 0000 0000 0000 ................ 00000150: 0000 0000 0000 0000 0000 0000 0000 0000 ................ 00000160: 0000 0000 0000 0000 0000 0000 0000 0000 ................ 00000170: 0000 0000 0000 0000 0000 0000 0000 0000 ................ ZynqMP> sf read 0x100 0x00 0x100 device 0 offset 0x0, size 0x100 SF: 256 bytes @ 0x0 Read: OK ZynqMP> md.w 0x100 00000100: 1234 1234 abcd abcd abcd abcd abcd abcd 4.4............. 00000110: abcd abcd abcd abcd abcd abcd abcd abcd ................ 00000120: ffff ffff ffff ffff ffff ffff ffff ffff ................ 00000130: ffff ffff ffff ffff ffff ffff ffff ffff ................ 00000140: ffff ffff ffff ffff ffff ffff ffff ffff ................ 00000150: ffff ffff ffff ffff ffff ffff ffff ffff ................ 00000160: ffff ffff ffff ffff ffff ffff ffff ffff ................ 00000170: ffff ffff ffff ffff ffff ffff ffff ffff ................ ZynqMP> mw.w 0x100 0xbeee 0x10 ZynqMP> md.w 0x100 00000100: beee beee beee beee beee beee beee beee ................ 00000110: beee beee beee beee beee beee beee beee ................ 00000120: ffff ffff ffff ffff ffff ffff ffff ffff ................ 00000130: ffff ffff ffff ffff ffff ffff ffff ffff ................ 00000140: ffff ffff ffff ffff ffff ffff ffff ffff ................ 00000150: ffff ffff ffff ffff ffff ffff ffff ffff ................ 00000160: ffff ffff ffff ffff ffff ffff ffff ffff ................ 00000170: ffff ffff ffff ffff ffff ffff ffff ffff ................ ZynqMP> sf update 0x100 0x00 0x100 device 0 offset 0x0, size 0x100 256 bytes written, 0 bytes skipped in 0.70s, speed 3591 B/s ZynqMP> mw.w 0x100 0x00 0x100 ZynqMP> md.w 0x100 00000100: 0000 0000 0000 0000 0000 0000 0000 0000 ................ 00000110: 0000 0000 0000 0000 0000 0000 0000 0000 ................ 00000120: 0000 0000 0000 0000 0000 0000 0000 0000 ................ 00000130: 0000 0000 0000 0000 0000 0000 0000 0000 ................ 00000140: 0000 0000 0000 0000 0000 0000 0000 0000 ................ 00000150: 0000 0000 0000 0000 0000 0000 0000 0000 ................ 00000160: 0000 0000 0000 0000 0000 0000 0000 0000 ................ 00000170: 0000 0000 0000 0000 0000 0000 0000 0000 ................ ZynqMP> sf read 0x100 0x00 0x100 device 0 offset 0x0, size 0x100 SF: 256 bytes @ 0x0 Read: OK ZynqMP> md.w 0x100 00000100: beee beee beee beee beee beee beee beee ................ 00000110: beee beee beee beee beee beee beee beee ................ 00000120: ffff ffff ffff ffff ffff ffff ffff ffff ................ 00000130: ffff ffff ffff ffff ffff ffff ffff ffff ................ 00000140: ffff ffff ffff ffff ffff ffff ffff ffff ................ 00000150: ffff ffff ffff ffff ffff ffff ffff ffff ................ 00000160: ffff ffff ffff ffff ffff ffff ffff ffff ................ 00000170: ffff ffff ffff ffff ffff ffff ffff ffff ................ Here is a case where it failed: ZynqMP> mw.w 100 abcd 10 ; md.w 100 10 00000100: abcd abcd abcd abcd abcd abcd abcd abcd ................ 00000110: abcd abcd abcd abcd abcd abcd abcd abcd ................ ZynqMP> sf update 100 100 10 device 0 offset 0x100, size 0x10 SPI flash failed in erase step ZynqMP> mw.w 100 00 100 ; sf read 100 100 10 ; md.w 100 10 device 0 offset 0x100, size 0x10 SF: 16 bytes @ 0x100 Read: OK 00000100: ffff ffff ffff ffff ffff ffff ffff ffff ................ 00000110: 0000 0000 0000 0000 0000 0000 0000 0000 ................ I hope this helps! Thanks, Liam Beguin Xiphos Systems Corp. http://xiphos.ca _______________________________________________ U-Boot mailing list U-Boot@lists.denx.de https://lists.denx.de/listinfo/u-boot