From mboxrd@z Thu Jan 1 00:00:00 1970 From: Stefan Mavrodiev Date: Tue, 6 Feb 2018 10:01:54 +0200 Subject: [U-Boot] [PATCH v3 2/2] Enable test case with A20-OLinuXino-Lime2 In-Reply-To: References: <1513936814-22277-1-git-send-email-stefan@olimex.com> <1513936814-22277-2-git-send-email-stefan@olimex.com> <1d43501c-4e63-ba45-1e33-1f138963a806@gmail.com> <5fdba0c3-b50c-98d2-6683-89c857527e2d@gmail.com> Message-ID: <25ac7c86-2ec7-93b9-9680-18d3b0299b4f@gmail.com> List-Id: MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit To: u-boot@lists.denx.de On 02/01/2018 04:45 PM, Jagan Teki wrote: > On Thu, Feb 1, 2018 at 8:08 PM, Stefan Mavrodiev > wrote: >> On 01/30/2018 09:15 AM, Stefan Mavrodiev wrote: >>> On 01/22/2018 10:36 AM, Jagan Teki wrote: >>>> On Tue, Jan 2, 2018 at 4:31 PM, Stefan Mavrodiev >>>> wrote: >>>>> On 12/26/2017 11:47 AM, Jagan Teki wrote: >>>>>> On Fri, Dec 22, 2017 at 3:30 PM, Stefan Mavrodiev >>>>>> wrote: >>>>>>> Driver testing is done with A20-OLinuXino-Lime2. Testing >>>>>>> requirements are: >>>>>>> - Exposing spi0 alternative pins in the dts file >>>>>>> - Add alias node, enabling driver probing >>>>>>> - Enable spi flash related options in the defconfig file >>>>>>> >>>>>>> The testing log is: >>>>>>> U-Boot SPL 2018.01-rc2-00023-gfa13cb3-dirty (Dec 22 2017 - >>>>>>> 11:39:48) >>>>>>> DRAM: 1024 MiB >>>>>>> CPU: 912000000Hz, AXI/AHB/APB: 3/2/2 >>>>>>> Trying to boot from sunxi SPI >>>>>>> >>>>>>> >>>>>>> U-Boot 2018.01-rc2-00023-gfa13cb3-dirty (Dec 22 2017 - 11:39:48 >>>>>>> +0200) >>>>>>> Allwinner Technology >>>>>>> >>>>>>> CPU: Allwinner A20 (SUN7I) >>>>>>> Model: Olimex A20-OLinuXino-LIME2 >>>>>> Lime2 doen't have in-built spi-nor is it? >>>>> We have some prototypes with this option. >>>> I've Rev.6 does it have spi-nor? >>> I assume Rev.6 is actually Rev.F. The first prototype with SPI flash is >>> Rev.I (Rev.9). >>>> >>>>>>> I2C: ready >>>>>>> DRAM: 1 GiB >>>>>>> MMC: SUNXI SD/MMC: 0 >>>>>>> MMC: no card present >>>>>>> mmc_init: -123, time 1 >>>>>>> *** Warning - MMC init failed, using default environment >>>>>> you lost the env? since it's spi-nor better to use flash env. >>>>> What's the point since this is only test case? >>>> this can be an issue if we boot the system from spi-nor, where we can >>>> get saved env. >>>> >>>>>>> In: serial >>>>>>> Out: serial >>>>>>> Err: serial >>>>>>> Allwinner mUSB OTG (Peripheral) >>>>>>> SCSI: SATA link 0 timeout. >>>>>>> AHCI 0001.0100 32 slots 1 ports 3 Gbps 0x1 impl SATA mode >>>>>>> flags: ncq stag pm led clo only pmp pio slum part ccc apst >>>>>>> Net: No ethernet found. >>>>>>> starting USB... >>>>>>> USB0: USB EHCI 1.00 >>>>>>> USB1: USB OHCI 1.0 >>>>>>> USB2: USB EHCI 1.00 >>>>>>> USB3: USB OHCI 1.0 >>>>>>> scanning bus 0 for devices... 1 USB Device(s) found >>>>>>> scanning bus 2 for devices... 1 USB Device(s) found >>>>>>> scanning usb for storage devices... 0 Storage Device(s) >>>>>>> found >>>>>>> Hit any key to stop autoboot: 0 >>>>>>> => sspi >>>>>>> >>>>>>> => sf probe >>>>>>> SF: Detected w25q128bv with page size 256 Bytes, erase size 4 KiB, >>>>>>> total 16 MiB >>>>>> try to use erase/write and read commands to verify >>>>> # Erase one sector >>>>> => sf erase 0x1000 0x100 >>>>> SF: 256 bytes @ 0x1000 Erased: ERROR >>>>> => sf erase 0x1000 0x1000 >>>>> SF: 4096 bytes @ 0x1000 Erased: OK >>>>> >>>>> # Get some random data >>>>> => md.b 0x50000000 0x100 >>>>> 50000000: d6 4d d0 7e 93 d8 0f 48 1b ef 7f 7e be 4e a8 5d >>>>> .M.~...H...~.N.] >>>>> 50000010: fd 9f e5 7f 2f 7b 5b 19 ed de d8 58 99 7a 24 da >>>>> ..../{[....X.z$. >>>>> 50000020: ef dd 9c 45 d7 97 ab 4f e7 fb ee 61 bc de 6a 1a >>>>> ...E...O...a..j. >>>>> 50000030: 9a 9f f4 3a be 4b 2f f3 ce 77 87 7e 07 23 af ff >>>>> ...:.K/..w.~.#.. >>>>> 50000040: e5 e5 c0 fa 65 e2 78 9b 16 38 42 52 e5 6c 52 0d >>>>> ....e.x..8BR.lR. >>>>> 50000050: f5 ff da 94 7f 98 96 d7 f0 9d 66 ae 9b b9 a2 cd >>>>> ..........f..... >>>>> 50000060: 0b dd f1 c9 1d 3b fe 5b cf ef d6 ce 8b c5 fd 56 >>>>> .....;.[.......V >>>>> 50000070: e2 52 eb 78 d4 f1 bf 57 56 6a 57 58 52 f1 0e 9d >>>>> .R.x...WVjWXR... >>>>> 50000080: df be f8 19 bf cf d7 ac 4b 3e 86 21 3f c3 fe 3e >>>>> ........K>.!?..> >>>>> 50000090: ea 27 52 ca 1f 79 bd 7b ef bf 96 c9 9d f6 81 d3 >>>>> .'R..y.{........ >>>>> 500000a0: cc 2e 8b c8 34 7f c5 2f 29 19 a8 dc 54 7a 07 1d >>>>> ....4../)...Tz.. >>>>> 500000b0: f4 e6 db ed 38 03 59 bb 31 ee b3 dd 5c e6 be 58 >>>>> ....8.Y.1...\..X >>>>> 500000c0: a6 7c 87 61 84 47 e0 b1 a1 fc 6e d3 d5 93 bf 8a >>>>> .|.a.G....n..... >>>>> 500000d0: 5d a3 be 4b cf 07 1d 92 ff 36 f9 46 fb 5a cb 8f >>>>> ]..K.....6.F.Z.. >>>>> 500000e0: f9 27 7a b8 7b 07 2e 22 a1 ee 56 bc a7 de 57 6a >>>>> .'z.{.."..V...Wj >>>>> 500000f0: da d4 7d 7f ee db 7a e2 bc 5c 44 64 b7 fc ea 3e >>>>> ..}...z..\Dd... >>>>> >>>>> # Write one page to spi-nor >>>>> => sf write 0x50000000 0x1000 0x100 >>>>> device 0 offset 0x1000, size 0x100 >>>>> SF: 256 bytes @ 0x1000 Written: OK >>>>> >>>>> # Readback data >>>>> => sf read 0x51000000 0x1000 0x100 >>>>> device 0 offset 0x1000, size 0x100 >>>>> SF: 256 bytes @ 0x1000 Read: OK >>>>> >>>>> # Compare data >>>>> => cmp.b 0x50000000 0x51000000 0x100 >>>>> Total of 256 byte(s) were the same >>>>> >>>>>>> => sf test 0 100000 >>>>>>> SPI flash test: >>>>>>> 0 erase: 11407 ticks, 89 KiB/s 0.712 Mbps >>>>>>> 1 check: 8881 ticks, 115 KiB/s 0.920 Mbps >>>>>>> 2 write: 10824 ticks, 94 KiB/s 0.752 Mbps >>>>>>> 3 read: 8872 ticks, 115 KiB/s 0.920 Mbps >>>>>>> Test passed >>>>>>> 0 erase: 11407 ticks, 89 KiB/s 0.712 Mbps >>>>>>> 1 check: 8881 ticks, 115 KiB/s 0.920 Mbps >>>>>>> 2 write: 10824 ticks, 94 KiB/s 0.752 Mbps >>>>>>> 3 read: 8872 ticks, 115 KiB/s 0.920 Mbps >>>>>>> => >>>>>>> >>>>>>> Signed-off-by: Stefan Mavrodiev >>>>>>> --- >>>>>>> arch/arm/dts/sun7i-a20-olinuxino-lime2.dts | 21 >>>>>>> +++++++++++++++++++++ >>>>>>> configs/A20-OLinuXino-Lime2_defconfig | 8 ++++++++ >>>>>>> 2 files changed, 29 insertions(+) >>>>>>> >>>>>>> diff --git a/arch/arm/dts/sun7i-a20-olinuxino-lime2.dts >>>>>>> b/arch/arm/dts/sun7i-a20-olinuxino-lime2.dts >>>>>>> index d5c796c..3c708da 100644 >>>>>>> --- a/arch/arm/dts/sun7i-a20-olinuxino-lime2.dts >>>>>>> +++ b/arch/arm/dts/sun7i-a20-olinuxino-lime2.dts >>>>>>> @@ -54,6 +54,7 @@ >>>>>>> >>>>>>> aliases { >>>>>>> serial0 = &uart0; >>>>>>> + spi0 = &spi0; >>>>>>> }; >>>>>>> >>>>>>> chosen { >>>>>>> @@ -215,6 +216,20 @@ >>>>>>> allwinner,pull = ; >>>>>>> }; >>>>>>> >>>>>>> + spi0_pins_b: spi0 at 1 { >>>>>>> + allwinner,pins = "PC0", "PC1", "PC2"; >>>>>>> + allwinner,function = "spi0"; >>>>>>> + allwinner,drive = ; >>>>>>> + allwinner,pull = ; >>>>>>> + }; >>>>>>> + >>>>>>> + spi0_cs0_pins_b: spi0_cs0 at 1 { >>>>>>> + allwinner,pins = "PC23"; >>>>>>> + allwinner,function = "spi0"; >>>>>>> + allwinner,drive = ; >>>>>>> + allwinner,pull = ; >>>>>>> + }; >>>>>>> + >>>>>>> usb0_id_detect_pin: usb0_id_detect_pin at 0 { >>>>>>> allwinner,pins = "PH4"; >>>>>>> allwinner,function = "gpio_in"; >>>>>>> @@ -257,6 +272,12 @@ >>>>>>> status = "okay"; >>>>>>> }; >>>>>>> >>>>>>> +&spi0 { >>>>>>> + pinctrl-names = "default"; >>>>>>> + pinctrl-0 = <&spi0_pins_b>, <&spi0_cs0_pins_b>; >>>>>>> + status = "okay"; >>>>>>> +}; >>>>>>> + >>>>>>> &uart0 { >>>>>>> pinctrl-names = "default"; >>>>>>> pinctrl-0 = <&uart0_pins_a>; >>>>>>> diff --git a/configs/A20-OLinuXino-Lime2_defconfig >>>>>>> b/configs/A20-OLinuXino-Lime2_defconfig >>>>>>> index 1edc844..c499e3d 100644 >>>>>>> --- a/configs/A20-OLinuXino-Lime2_defconfig >>>>>>> +++ b/configs/A20-OLinuXino-Lime2_defconfig >>>>>>> @@ -30,3 +30,11 @@ CONFIG_SCSI=y >>>>>>> CONFIG_USB_EHCI_HCD=y >>>>>>> CONFIG_USB_MUSB_GADGET=y >>>>>>> CONFIG_SYS_USB_EVENT_POLL_VIA_INT_QUEUE=y >>>>>>> +CONFIG_CMD_SF=y >>>>>>> +CONFIG_CMD_SF_TEST=y >>>>>> Ok, but not useful to include in config's >>>>>> >>>>>>> +CONFIG_CMD_SPI=y >>>> drop this. >>> >>> >> Hi, >> >> I have problem with the driver. I'm not sure where the problem is. >> Without calling sspi first, sf probe doesn't work. I guess driver doesn't >> bind. >> >> The output is: >> >> => sf probe >> Invalid chip select 0:0 (err=-19) >> Failed to initialize SPI flash at 0:0 > Haa..observed similar with sun6i_spi [1], what I've seen is controller > writes are not done with direct 'sf probe' > > So with sspi are you able to do ops with sf? > > [1] http://git.denx.de/?p=u-boot-spi.git;a=commitdiff;h=0a45dde186f766626b806de3e962fb53e1c40522 Hi, I've made some fast debugging with/without sspi command. => sf probe spi_find_chip_select() -> device_find_first_child(spi at 01c05000) device_find_first_child() -> parent: spi at 01c05000 device_find_first_child() -> child_heads is empty! Invalid chip select 0:0 (err=-19) Failed to initialize SPI flash at 0:0 => sspi spi_find_chip_select() -> device_find_first_child(spi at 01c05000) device_find_first_child() -> parent: spi at 01c05000 device_find_first_child() -> child_heads is empty! spi_get_bus_and_cs: Binding new device 'generic_0:0', busnum=0, cs=0, driver=spi_generic_drv device_bind_common() - name: generic_0:0; parent name: spi at 01c05000 spi_get_bus_and_cs: bus=7af3c138, slave=7af4bd7 => sf probe spi_find_chip_select() -> device_find_first_child(spi at 01c05000) device_find_first_child() -> parent: spi at 01c05000 spi_find_chip_select: plat=7af4bd68, cs=0 spi_get_bus_and_cs: bus=7af3c138, slave=7af4bd78 SF: Detected w25q128bv with page size 256 Bytes, erase size 4 KiB, total 16 MiB What I can see is that the flash device never get binded with spi driver. The sspi command creates generic spi device, which later is used by sf opts. I think flash device doesn't get read from the DT when CONFIG_DM_SPI_FLASH is enabled. If legacy controls are enabled maybe there should be way to bind driver to device? Regards, Stefan Mavrodiev