[U-Boot] [PATCH 0/7] Remove defines for SPI default speed and mode

Simon Goldschmidt
2018-12-10T21:08:38Z

Am 10.12.2018 um 21:17 schrieb Adam Ford:
> On Mon, Dec 10, 2018 at 1:20 PM Simon Goldschmidt
> <simon.k.r.goldschmidt@gmail.com> wrote:
>>
>> Am 10.12.2018 um 16:42 schrieb Adam Ford:
>>> On Mon, Dec 10, 2018 at 4:54 AM Patrick Delaunay
>>> <patrick.delaunay@st.com> wrote:
>>>>
>>>>
>>>> This patch-set finish (after the last Simmon comment)
>>>> and depends on the previous serie named:
>>>> "Read default speed and mode values from DT"
>>>>
>>>> http://patchwork.ozlabs.org/project/uboot/list/?series=76834
>>>>
>>>> This patchset remove the unnecessary defines for SPI speed and mode
>>>> when DM mode is used for SPI (CONFIG_DM_SPI_FLASH).
>>>>
>>>> Build result is available for the serie in gihub and travis:
>>>> https://github.com/patrickdelaunay/u-boot/tree/topic/spi
>>>> https://travis-ci.org/patrickdelaunay/u-boot/branches
>>>>
>>>>
>>> After applying both of your patches, the da850evm no longer boots from
>>> SPI flash.
>>
>> I just did test this and it worked for me. Booting from QSPI on
>> socfpga_socrates and loading something in U-Boot via sf probe/sf read, so:
>> Tested-by: Simon Goldschmidt <simon.k.r.goldschmidt@gmail.com>
>>
>>>
>>> U-Boot SPL 2019.01-rc1-00754-g21fb8c41b1 (Dec 10 2018 - 09:02:28 -0600)
>>> Trying to boot from SPI
>>> Warning: SPI speed fallback to 100 kHz
>>>
>>> [repeat in perpetuity]
>>>
>>> U-Boot SPL 2019.01-rc1-00754-g21fb8c41b1 (Dec 10 2018 - 09:02:28 -0600)
>>> Trying to boot from SPI
>>> Warning: SPI speed fallback to 100 kHz
>>>
>>> I then tried to apply the first patch, and it also fails booting.
>>>
>>> I'll reply to the original series with a similar message. Looking at
>>> the comments, it looks like the code is assuming the DM_SPI_FLASH
>>> means DT when in reality, the da850evm's SPL is using platdata. I
>>> looked at the platdata structure and I didn't see entries for SPI mode
>>> or speed. However, I cannot prove this is the issue on the da850evm
>>> without diving into it a bit more.
>>
>> Adam, from reading the da850-emv.dts and its '-u-boot.dtsi', it seems
>> the fdtgrep indicators to keep the flash for the SPL dts are missing
>> (compare to socfpga_cyclone5_socrates-u-boot.dtsi). In this case, the
>> code does not find a flash node.
>>
>> The same would of course apply when using platdata.
>
> I tried modifying the -u-boot.dtsi file to look like:
>
> &flash {
> compatible = "m25p64", "spi-flash";
> u-boot,dm-pre-reloc;
> };

That should be correct when using DTS. I have no idea about the platform
data, sorry. That's a todo on my list to see if it gives me enough
memory to enable FIT/signature support in my SPL, but I haven't got to
compile it, yet, as cadence QSPI does not seem to support platdata, yet.

> Unfortunately, I not get some build errors. Do you have any
> suggestions? I know the dtsi didn't need the "u-boot,dm-pre-reloc;"
> before this patch.

Well, that's only partly true. You need this information in SPL unless
you go the hacky way of the define that Patrick wants to remove here.
And the standard way to get this information into SPL is the devicetree.

I think Patrick did the right move to send this series so that we can
drop the two defines and get the values from dts. Now platdata seems to
be missing, so this must be solved.

> Might there be a platdata example I can follow?

As written above, I don't know of any. Even without build errors, I'm
not sure it would work...

Regards,
Simon

>
> The build errors as as follows:
>
> make[2]: 'arch/arm/dts/da850-evm.dtb' is up to date.
> CAT u-boot-dtb.bin
> COPY u-boot.bin
> MKIMAGE u-boot.img
> MKIMAGE u-boot-dtb.img
> DTOC C spl/dts/dt-platdata.c
> DTOC H include/generated/dt-structs-gen.h
> Traceback (most recent call last):
> Traceback (most recent call last):
> File "./tools/dtoc/dtoc", line 109, in <module>
> File "./tools/dtoc/dtoc", line 109, in <module>
> options.output)
> options.output)
> File "/home/aford/src/u-boot/tools/dtoc/dtb_platdata.py", line 564,
> in run_steps
> File "/home/aford/src/u-boot/tools/dtoc/dtb_platdata.py", line 564,
> in run_steps
> plat.scan_reg_sizes()
> plat.scan_reg_sizes()
> File "/home/aford/src/u-boot/tools/dtoc/dtb_platdata.py", line 335,
> in scan_reg_sizes
> File "/home/aford/src/u-boot/tools/dtoc/dtb_platdata.py", line 335,
> in scan_reg_sizes
> addr = fdt_util.fdt_cells_to_cpu(val[i:], reg.na)
> addr = fdt_util.fdt_cells_to_cpu(val[i:], reg.na)
> File "/home/aford/src/u-boot/tools/dtoc/fdt_util.py", line 54, in
> fdt_cells_to_cpu
> File "/home/aford/src/u-boot/tools/dtoc/fdt_util.py", line 54, in
> fdt_cells_to_cpu
> out = out << 32 | fdt32_to_cpu(val[1])
> out = out << 32 | fdt32_to_cpu(val[1])
> IndexErrorIndexError: : list index out of rangelist index out of range
>
> scripts/Makefile.spl:287: recipe for target 'spl/dts/dt-platdata.c' failed
> make[1]: *** [spl/dts/dt-platdata.c] Error 1
> make[1]: *** Waiting for unfinished jobs....
> scripts/Makefile.spl:284: recipe for target
> 'include/generated/dt-structs-gen.h' failed
> make[1]: *** [include/generated/dt-structs-gen.h] Error 1
> Makefile:1591: recipe for target 'spl/u-boot-spl' failed
> make: *** [spl/u-boot-spl] Error 2
>
>
>
>
>>
>> Regards,
>> Simon
>>
>>>
>>> adam
>>>>
>>>> Patrick Delaunay (7):
>>>> spi: update management of default speed and mode
>>>> spi: add comment for spi_flash_probe_bus_cs function
>>>> da850evm: sf: Read default speed and mode values from DT
>>>> dfu: sf: Read default speed and mode values from DT
>>>> mips: mt76xx: gardena-smart-gateway: Read default speed and mode
>>>> values from DT
>>>> env: Read default speed and mode values from DT
>>>> spi: remove define for SPI default SPEED and MODE
>>>>
>>>> board/davinci/da8xxevm/da850evm.c | 7 +++++++
>>>> board/gardena/smart-gateway-mt7688/board.c | 24 ++++++++++++++++++++----
>>>> cmd/sf.c | 10 ++++++----
>>>> common/spl/spl_spi.c | 11 ++++++-----
>>>> common/splash_source.c | 11 ++++++-----
>>>> drivers/dfu/dfu_sf.c | 10 ++++++++--
>>>> env/Kconfig | 4 ++--
>>>> env/sf.c | 5 ++++-
>>>> include/spi_flash.h | 18 ++++++++++++++++++
>>>> 9 files changed, 77 insertions(+), 23 deletions(-)
>>>>
>>>> --
>>>> 2.7.4
>>>>
>>