[U-Boot] [PATCH v7 00/34] sf: MTD support

Simon Glass
2015-11-26T16:48:25Z

Hi Stefan,

On 26 November 2015 at 05:04, Stefan Roese <sr@denx.de> wrote:
> Hi Jagan,
>
> (added Simon, as he's the DM guru)
>
> On 26.11.2015 13:46, Jagan Teki wrote:
>> Hi Stefan,
>>
>> On 26 November 2015 at 18:02, Stefan Roese <sr@denx.de> wrote:
>>> Hi Jagan,
>>>
>>>
>>> On 26.11.2015 13:24, Jagan Teki wrote:
>>>>
>>>> On 26 November 2015 at 17:33, Jagan Teki <jteki@openedev.com> wrote:
>>>>>
>>>>> This series is combination of mtd and sf tunning stuff in previous
>>>>> version patches.[1][2]
>>>>>
>>>>> This is whole patch series for add mtd support to spi-flash
>>>>> framework and related stuff.
>>>>>
>>>>> The idea is to introduce the spi-nor flash framework which
>>>>> similar to Linux with driver-model support.
>>>>>
>>>>> Detail changes:
>>>>> - drivers/mtd/spi/sf_probe.c: spi-flash to spi drivers interface(dm and
>>>>> non-dm)
>>>>> - drivers/mtd/spi/sf_ops.c: Core spi-flash functionalities.
>>>>> - spi_flash ops and dm_spi_ops are not needed as flash opertaion are
>>>>> common for dm and non-dm via MTD
>>>>>
>>>>> Changes in v7:
>>>>> - Rebase to master
>>>>> - Added MTD core support to dataflash
>>>>> - Few patch bisectable separations
>>>>>
>>>>> Changes in v6, v5, v4, v3, v2:
>>>>> - One patch bisectable separation
>>>>> - Rebase to master
>>>>> - added newly mtd stuff patches.
>>>>>
>>>>> Testing:
>>>>> $ git clone git://git.denx.de/u-boot-spi.git
>>>>> $ cd u-boot-spi
>>>>> $ git checkout -b spi-nor-mtd origin/next-spi-nor-mtd
>>>>>
>>>>> [1]
>>>>> http://u-boot.10912.n7.nabble.com/PATCH-v6-00-23-sf-MTD-support-td233769.html
>>>>> [2] http://lists.denx.de/pipermail/u-boot/2015-October/229857.html
>>>>>
>>>>> thanks!
>>>>> Jagan.
>>>>>
>>>>> Jagan Teki (34):
>>>>> sf: spi_flash_validate_params => spi_flash_scan
>>>>> sf: Move spi_flash_scan code to sf_ops
>>>>> sf: Move read_id code to sf_ops
>>>>> sf: probe: Code cleanup
>>>>> sf: Use static for file-scope functions
>>>>> sf: Fix Makefile
>>>>> sf: Use simple name for register access functions
>>>>> sf: Use flash function pointers in dm_spi_flash_ops
>>>>> sf: Flash power up read-only based on idcode0
>>>>> sf: Use static for file-scope functions
>>>>> sf: Remove unneeded header includes
>>>>> sf: probe: Use spi_flash_scan in dm-spi-flash
>>>>> sf: Re-factorize spi_flash_probe_tail code
>>>>> dm-sf: Re-factorize spi_flash_std_probe code
>>>>> zynq: Enable CONFIG_SPL_MTD_SUPPORT
>>>>> sf: Add MTD support to spi_flash
>>>>> sf: Use mtd_info ops instead of spi_flash ops
>>>>> cmd_sf: Use mtd->size instead of flash->size
>>>>> sf: Use mtd->erasesize instead of flash->erase_size
>>>>> dm-sf: use mtd_ops, drop dm_spi_flash_ops
>>>>> sf: Use MTD lock operations
>>>>> sf: Add MTD support for non-dm spi_flash interface
>>>>> sf: probe: Minor cleanup
>>>>> sf: Drop SNOR_F_SST_WR flash->flags
>>>>> sf: Remove unneeded SST_BP and SST_WP
>>>>> sf: ops: Fix missing break on spansion read_bar
>>>>> sf: Drop SPI_FLASH_MTD driver
>>>>> configs: Remove CONFIG_SPI_FLASH_MTD
>>>>> sf: dataflash: Remove unneeded spi data
>>>>> sf: dataflash: Move flash id detection into jedec_probe
>>>>> sf: dataflash: Fix add_dataflash return logic
>>>>> sf: dataflash: Add MTD core support
>>>>> sf: dataflash: Rename sf_dataflash.c to mtd_dataflash.c
>>>>> mtd: dataflash: Minor cleanups
>>>>
>>>>
>>>> Tested whole series except 'sf prot' and dataflash.
>>>>
>>>> Tested-by: Jagan Teki <jteki@openedev.com>
>>>
>>>
>>> Thanks.
>>>
>>> BTW: Is this series also tested on a board with SPL_DM and
>>> DM_SPI and DM_SPI_FLASH enabled? By loading in SPL the main
>>> U-Boot image via SPI NOR flash?
>>
>> Don't know the reason yet SPL is not working with my microzed
>> board(even with MMC), so I took the fsbl instead of SPL. The
>> combination I have verified with both dm and non-dm cases on u-boot.
>>
>> Michal, Can you verify the SPI_SPL flow as well.
>
> So you have no experience with DM in SPL?
>
>>> I'm asking since I'm currently struggling to get this working
>>> on MVEBU. And am experiencing problems with the DM SPI
>>> bus and device probing. Without SPL_DM this is working just
>>> fine.
>>
>> OK, means you're trying for SPI_SPL with DM is it?
>
> Yes. I'm trying to enable SPL_DM on MVEBU. And this with
> DM_SPI and DM_SPI_FLASH enabled as well. I've the kirkwood
> SPI driver ported to DM here for this (patches will follow).
>
>> what kind of issue?
>> is it failed to probe device or something?
>
> Here the log (with some debug() enabled):
>
> ----------<-------------------------------
> uclass_find_device_by_seq: 0 -1
> uclass_find_device_by_seq: 0 0
> - -1 -1
> - not found
> bind node serial at 12000
> - found match at 'ns16550_serial'
> Bound device serial at 12000 to root_driver
> uclass_find_device_by_seq: 0 -1
> uclass_find_device_by_seq: 0 0
> - -1 -1
> - not found
>
> U-Boot SPL 2016.01-rc1-00267-gdb3362c-dirty (Nov 26 2015 - 14:00:16)
> High speed PHY - Version: 2.0
> Detected Device ID 6828
> board SerDes lanes topology details:
> | Lane # | Speed | Type |
> --------------------------------
> | 0 | 5 | PCIe0 |
> | 1 | 3 | SATA0 |
> | 2 | 3 | SATA1 |
> | 3 | 3 | SATA3 |
> | 4 | 3 | SATA2 |
> | 5 | 5 | USB3 HOST1 |
> --------------------------------
> PCIe, Idx 0: detected no link
> High speed PHY - Ended Successfully
> DDR3 Training Sequence - Ver TIP-1.29.0
> DDR3 Training Sequence - Switching XBAR Window to FastPath Window
> DDR3 Training Sequence - Ended Successfully
> Trying to boot from SPI
> uclass_find_device_by_seq: 0 0
> - not found
> uclass_find_device_by_seq: 1 0
> - not found
> Invalid bus 0 (err=-19)
> SPI probe failed.
> SPL: failed to boot from all boot devices
> ### ERROR ### Please RESET the board ###
> ----------<-------------------------------
>
> Simon, do you have a clue what's missing here? SPI NOR booting
> is working just fine in SPL without SPL_DM enabled on this
> platform. AFAICT, I've added the required "u-boot,dm-pre-reloc"
> properties to the dts.
>
>> I will verify the same and
>> let you know.
>
> How can you verify this if SPI is not working at all for you? Or
> did I misunderstand you (see above)?

-19 means -ENODEV. I suppose CONFIG_SPL_OF_CONTROL is enabled. You can
check the device tree used for SPL in your build directory -
spl/u-boot-spl.dtb.

From the debugging it looks like you have no SPI flash devices.

You can check chromebook_jerry which uses this feature. See this node:

&spi2 {
status = "okay";
u-boot,dm-pre-reloc;

spi_flash: spiflash at 0 {
u-boot,dm-pre-reloc;
compatible = "spidev", "spi-flash";
spi-max-frequency = <20000000>; /* Reduce for Dediprog em100 pro */
reg = <0>;
};
};

Regards,
Simon