
On 23 October 2015 at 15:42, Hoefle Marco Marco.Hoefle@nanotronic.ch wrote:
Maybe somebody has a valid u-boot dts file for a microblaze system with an SPI core? That would helpful. We want to move from a parallel nor flash to a SPI flash for FPGA config, u-boot, Linux Kernel and rootfs. The last missing part is u-boot. The kernel dts file is ok and the mtd partitions are set up correctly.
I even grepped on linux/arch/microblaze couldn't get much info, So added Michal he well aware of this may be he can help.
-----Original Message----- From: Jagan Teki [mailto:jteki@openedev.com] Sent: Mittwoch, 21. Oktober 2015 18:45 To: Hoefle Marco Marco.Hoefle@nanotronic.ch Cc: u-boot@lists.denx.de Subject: Re: [U-Boot] u-boot device model SPI + SPI Flash
On 21 October 2015 at 22:10, Hoefle Marco Marco.Hoefle@nanotronic.ch wrote:
Hello Jagan, Thank you for your reply. Please find my comments bellow. I missed to mention that I am using mainline 2015.07
-----Original Message----- From: Jagan Teki [mailto:jteki@openedev.com] Sent: Mittwoch, 21. Oktober 2015 18:28 To: Hoefle Marco Marco.Hoefle@nanotronic.ch Cc: u-boot@lists.denx.de Subject: Re: [U-Boot] u-boot device model SPI + SPI Flash
On 21 October 2015 at 16:25, Hoefle Marco Marco.Hoefle@nanotronic.ch wrote:
Hello, I saw that here is also a mailing list dedicated to device model issues but it
looks obsolete (last post February 2014) so I am using this forum.
Please note its driver model - not a device model.
Ok
I have a problem nearly identically to http://lists.denx.de/pipermail/u-boot/2015-April/210754.html
The SPI initialization does not work:
Invalid bus 0 (err=-19) *** Warning - spi_flash_probe() failed, using default environment
Which board it is? dts file name?
It is a custom dts file. It is for a Microblaze CPU in an Artix FPGA. The dts reflects that one below
This is the device tree compiled into u-boot:
U-Boot> fdt addr 0x8FEB8A7C U-Boot> fdt print / { #address-cells = <0x00000001>; #size-cells = <0x00000001>; aliases { serial0 = "serial@40600000"; spi0 = "/axi_quad_spi@44a00000"; }; memory { device_type = "memory"; reg = <0x80000000 0x10000000>; }; axi_quad_spi@44a00000 { compatible = "xlnx,xps-spi-2.00.a";
Do you need zynq spi or qspi driver there is no compatible string with "xlnx,xps-spi-2.00.a" do know which source you're using?
This driver is used: u-boot/drivers/spi/xilinx_spi.c
In that case, use the compatible in your dts as below
static const struct udevice_id xilinx_spi_ids[] = { { .compatible = "xlnx,xilinx-spi" }, { } };
That was a copy paste failure, sorry for that. The reason was that in the meanwhile I tried the original Xilinx driver from their github tree. They have the tag: compatible = "xlnx,xps-spi-2.00.a"
However, I changed back to have mainline code only an put a few printfs to it: U-Boot 2015.07--33711bdd4a4dce942fb5ae85a68899a8357bdd94---dirty (Oct 22 2015 - 07:57:35 +0200)
DRAM: 256 MiB uclass_find_device_by_seq: 0 -1 uclass_find_device_by_seq: 0 0
- -1 -1
- not found
env_relocate: 267 spi_flash_probe: 410 busnum: 0, cs: 0, max_hz: 50000000 spi_setup_slave: 336 spi_get_bus_and_cs: 248 uclass_find_device_by_seq: 0 0
- -1 -1
- not found
uclass_find_device_by_seq: 1 0
- -1 -1
- not found
Invalid bus 0 (err=-19) *** Warning - spi_flash_probe() failed, using default environment
U-Boot> fdt addr 0x8FEB89FC U-Boot> fdt print / { #address-cells = <0x00000001>; #size-cells = <0x00000001>; aliases { serial0 = "/serial@40600000"; spi0 = "/axi_quad_spi@44a00000"; }; memory { device_type = "memory"; reg = <0x80000000 0x10000000>; }; serial@40600000 { clock-frequency = <0x05f5e100>; compatible = "xlnx,xps-uartlite-1.00.a"; current-speed = <0x0001c200>; }; axi_quad_spi@44a00000 { compatible = "xlnx,xilinx-spi"; reg = <0x44a00000 0x00010000>; spi-max-frequency = <0x423a35c7>; #address-cells = <0x00000001>; #size-cells = <0x00000000>; status = "okay"; is-dual = <0x00000000>; num-cs = <0x00000001>; flash@0 { compatible = "n25q128a11"; reg = <0x00000000>; spi-tx-bus-width = <0x00000001>; spi-rx-bus-width = <0x00000004>; spi-max-frequency = <0x0d3ed78e>; #address-cells = <0x00000001>; #size-cells = <0x00000001>; partition@qspi-fsbl-uboot { label = "qspi-fsbl-uboot"; reg = <0x00000000 0x00100000>; }; partition@qspi-linux { label = "qspi-linux"; reg = <0x00100000 0x00500000>; }; partition@qspi-device-tree { label = "qspi-device-tree"; reg = <0x00600000 0x00020000>; }; partition@qspi-rootfs { label = "qspi-rootfs"; reg = <0x00620000 0x005e0000>; }; partition@qspi-bitstream { label = "qspi-bitstream"; reg = <0x00c00000 0x00400000>; }; }; }; }; U-Boot> dm tree Class Probed Name
root [ + ] root_driver spi [ ] `-- axi_quad_spi@44a00000
Btw, it seems that dm tree has a bug. It crashes on this line: ret = test_cmd->cmd(test_cmd, flag, argc, argv);
I did a quick hack on this to get the output. I will investigate this further and tell you the result if you wish.
Or if you want to change it on driver update your compatible string on above udevice_id
reg = <0x44a00000 0x00010000>; spi-max-frequency = <0x423a35c7>; #address-cells = <0x00000001>; #size-cells = <0x00000000>; status = "okay"; is-dual = <0x00000000>; num-cs = <0x00000001>; flash@0 { compatible = "n25q128a11"; reg = <0x00000000>; spi-tx-bus-width = <0x00000001>; spi-rx-bus-width = <0x00000004>; spi-max-frequency = <0x0d3ed78e>; #address-cells = <0x00000001>; #size-cells = <0x00000001>; partition@qspi-fsbl-uboot { label = "qspi-fsbl-uboot"; reg = <0x00000000 0x00100000>; }; partition@qspi-linux { label = "qspi-linux"; reg = <0x00100000 0x00500000>; }; partition@qspi-device-tree { label = "qspi-device-tree"; reg = <0x00600000 0x00020000>; }; partition@qspi-rootfs { label = "qspi-rootfs"; reg = <0x00620000 0x005e0000>; }; partition@qspi-bitstream { label = "qspi-bitstream"; reg = <0x00c00000 0x00400000>; }; }; };
};
Has anybody an idea how to debug this further?