[U-Boot] u-boot device model SPI + SPI Flash

Hoefle Marco Marco.Hoefle at nanotronic.ch
Fri Oct 23 12:12:54 CEST 2015


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.


 
> > -----Original Message-----
> > From: Jagan Teki [mailto:jteki at openedev.com]
> > Sent: Mittwoch, 21. Oktober 2015 18:45
> > To: Hoefle Marco <Marco.Hoefle at nanotronic.ch>
> > Cc: u-boot at 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 at 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 at openedev.com]
> > >> Sent: Mittwoch, 21. Oktober 2015 18:28
> > >> To: Hoefle Marco <Marco.Hoefle at nanotronic.ch>
> > >> Cc: u-boot at 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 at 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 at 40600000";
> > >> >                 spi0 = "/axi_quad_spi at 44a00000";
> > >> >         };
> > >> >         memory {
> > >> >                 device_type = "memory";
> > >> >                 reg = <0x80000000 0x10000000>;
> > >> >         };
> > >> >         axi_quad_spi at 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 at 40600000";
>                 spi0 = "/axi_quad_spi at 44a00000";
>         };
>         memory {
>                 device_type = "memory";
>                 reg = <0x80000000 0x10000000>;
>         };
>         serial at 40600000 {
>                 clock-frequency = <0x05f5e100>;
>                 compatible = "xlnx,xps-uartlite-1.00.a";
>                 current-speed = <0x0001c200>;
>         };
>         axi_quad_spi at 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 at 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 at qspi-fsbl-uboot {
>                                 label = "qspi-fsbl-uboot";
>                                 reg = <0x00000000 0x00100000>;
>                         };
>                         partition at qspi-linux {
>                                 label = "qspi-linux";
>                                 reg = <0x00100000 0x00500000>;
>                         };
>                         partition at qspi-device-tree {
>                                 label = "qspi-device-tree";
>                                 reg = <0x00600000 0x00020000>;
>                         };
>                         partition at qspi-rootfs {
>                                 label = "qspi-rootfs";
>                                 reg = <0x00620000 0x005e0000>;
>                         };
>                         partition at qspi-bitstream {
>                                 label = "qspi-bitstream";
>                                 reg = <0x00c00000 0x00400000>;
>                         };
>                 };
>         };
> };
> U-Boot> dm tree
> Class       Probed   Name
> ----------------------------------------
>  root        [ + ]    root_driver
>  spi         [   ]    `-- axi_quad_spi at 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 at 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 at qspi-fsbl-uboot {
> > >> >                                 label = "qspi-fsbl-uboot";
> > >> >                                 reg = <0x00000000 0x00100000>;
> > >> >                         };
> > >> >                         partition at qspi-linux {
> > >> >                                 label = "qspi-linux";
> > >> >                                 reg = <0x00100000 0x00500000>;
> > >> >                         };
> > >> >                         partition at qspi-device-tree {
> > >> >                                 label = "qspi-device-tree";
> > >> >                                 reg = <0x00600000 0x00020000>;
> > >> >                         };
> > >> >                         partition at qspi-rootfs {
> > >> >                                 label = "qspi-rootfs";
> > >> >                                 reg = <0x00620000 0x005e0000>;
> > >> >                         };
> > >> >                         partition at qspi-bitstream {
> > >> >                                 label = "qspi-bitstream";
> > >> >                                 reg = <0x00c00000 0x00400000>;
> > >> >                         };
> > >> >                 };
> > >> >         };
> > >> > };
> > >> >
> > >> > Has anybody an idea how to debug this further?
> >
> > thanks!
> >
> > --
> > Jagan | openedev.
> >
> 
> _______________________________________________
> U-Boot mailing list
> U-Boot at lists.denx.de
> http://lists.denx.de/mailman/listinfo/u-boot
> 



More information about the U-Boot mailing list