[U-Boot] u-boot device model SPI + SPI Flash
Jagan Teki
jteki at openedev.com
Fri Oct 23 12:20:47 CEST 2015
On 23 October 2015 at 15:42, Hoefle Marco <Marco.Hoefle at 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 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?
--
Jagan | openedev.
More information about the U-Boot
mailing list